1

Q> GridViewボタンのテキストをハードコードされたものとして表示し、ボタンのクリック時に発生するイベントを表示したいのですが。これを達成する方法は?

今までここまで来られました

GridViewサンプル

しかし、ボタンのテキストを[読み取り/削除]列の値ではなく、 [読み取り]または[削除]として表示したいと思います。私が使用したコード

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataKeyNames="MID" DataSourceID="inbox" EnableModelValidation="True" 
onselectedindexchanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:ButtonField ButtonType="Button" DataTextField="MID" HeaderText="Read" 
  Text="Read" />
<asp:BoundField DataField="MID" HeaderText="MID" InsertVisible="False" 
  ReadOnly="True" SortExpression="MID" />
<asp:BoundField DataField="sender" HeaderText="sender" 
  SortExpression="sender" />
<asp:BoundField DataField="subject" HeaderText="subject" 
  SortExpression="subject" />
<asp:BoundField DataField="on" HeaderText="on" SortExpression="on" />
<asp:ButtonField ButtonType="Button" DataTextField="MID" HeaderText="Delete" 
  Text="Delete" />
</Columns>
</asp:GridView>

<asp:SqlDataSource ID="inbox" runat="server" 
ConnectionString="<%$ ConnectionStrings:connectionString %>" 
SelectCommand="SELECT [MID], [sender], [subject], [on] FROM [mail]">
</asp:SqlDataSource>
4

1 に答える 1

3

テキストを「削除」または「読み取り」として表示する場合は、結果DataTextFieldのプロパティを使用するようにプロパティを設定せずMID、代わりに次のCommandNameようにプロパティを設定します。

<asp:ButtonField ButtonType="Button" CommandName='<%#Eval("MMID")%>' HeaderText="Delete" 
  Text="Delete" />

OnClickボタンのイベントを処理する限りOnRowCommand、GridViewで次のようにイベントを処理できます。

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView_RowCommand" AutoGenerateColumns="False" 

次に、背後にコードを追加します。

protected void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{

  string MMID = e.CommandName;
  if( (e.CommandSource as ButtonField).Text=="Delete")
  {
             //oh, I should delete this MMID
  }
}    

アップデート

上記のコードは機能しません。ButtonFieldは、男性にとって乳首と同じくらい便利です。代わりに、ItemTemplateFieldを次のように使用します。

 <asp:TemplateField>
     <ItemTemplate>
         <asp:Button ID="btn" runat="server" CommandName="Delete" CommandArgument='<%#Eval("MID") %>'
                    Text="Delete" />
     </ItemTemplate>
 </asp:TemplateField>

次に、GridView_RowCommandは次のようになります。

protected void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
    {
        string mid = e.CommandArgument.ToString();
        // If multiple buttons are used in a GridView control, use the
        // CommandName property to determine which button was clicked.
        if (e.CommandName == "Delete")
        {

        }
    }    
于 2012-09-05T14:56:28.057 に答える