0

私の aspx ページではlinkbtTitle、リピーター コントロール内にLinkbutton があります。

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
  <script runat="server">  
    protected void Buttonlink_Click(object sender, System.EventArgs e)
    {
        LinkButton linkbtTitle = (LinkButton)sender;
        linkbtTitle.ForeColor = System.Drawing.Color.HotPink;//change color when selected
        linkbtTitle.Font.Underline = true;
        linkbtTitle.Font.Italic = true;
     }  
  </script> 
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
  <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" /> 
   <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>

    <asp:Repeater ID="Repeater1" runat="server">
      <ItemTemplate>

          <asp:LinkButton ID="linkbtTitle" runat="server" Text='<%#Eval("TITLE")%>' CommandArgument='<%#Eval("ID")%>' OnCommand="linkbtTitle_Click" OnClick="Buttonlink_Click" ></asp:LinkButton>                               

    </ItemTemplate>
        </asp:Repeater>
    </ContentTemplate>
    </asp:UpdatePanel> 

    </asp:Content>

クライアントがクリックしOnCommand="linkbtTitle_Click"たときに添付ファイルを自動ダウンロードし 、選択したリンクボタンの色を変更する方法を使用します。LinkbuttonOnClick="Buttonlink_Click"

このページを作成すると、添付ファイルは自動的にダウンロードされますが、選択したリンク ボタンの色が変わりません。

デバッグを試みます。関数 Buttonlink_Click() は呼び出されません。メッセージが表示されます:Expression Statement is not assignment or callマウスをステートメントに合わせると:... OnClick="Buttonlink_Click" ...

linkbtTitle_Clickのコードビハインドを見てください:

public void linkbtTitle_Click(object sender, CommandEventArgs e)
    {
       //auto download the attachment when selected
        int mamd = Convert.ToInt32(e.CommandArgument.ToString());

        string sql = "select * from MAU_DON where MA_MAU_DON="+mamd;
        DataTable maudon = l.EXECUTEQUERYSQL(sql);

        string attachment = dirPath["MAU_DON"].DIRECTORY + @"/" + maudon.Rows[0]["PATH"].ToString();
        HttpContext.Current.Response.ContentType = "application/octet-stream";
        HttpContext.Current.Response.AddHeader("Content-Disposition",
          "attachment; filename=" + Path.GetFileName(attachment));
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.WriteFile(attachment);
        HttpContext.Current.Response.End();
    }
4

1 に答える 1

0

サーバー側の機能にはヒットしません。項目テンプレートで linkbutton のようなコントロールや通常のボタン自体を使用すると、イベンティング メカニズムがわずかに変更されます。onclick イベントが発火する代わりに、リピーターのイベントが発火します...それは ItemCommand と呼ばれます。これは、イベント バブリングと呼ばれるメカニズムによって発生します。

どのボタンが原因であるかを知るには、CommandName と CommandArgument を使用する必要があります。

<asp:LinkButton ID="lnkbtn" runat="server" CommandName="foo" CommandArgument="<%# Eval ("Id") %>" Text="FooBtn" />

コード ビハインド、リピーターのアイテム コマンド イベントでは、次のように記述します。

if (e.CommandName == "foo") 
{
    // so we know what button triggered this
    // access the value of e.CommandArgument to get associated row data.
}
于 2013-11-10T08:19:10.080 に答える