Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在GridView中编辑按钮文本_Asp.net_Gridview - Fatal编程技术网

Asp.net 在GridView中编辑按钮文本

Asp.net 在GridView中编辑按钮文本,asp.net,gridview,Asp.net,Gridview,Q>我想显示一个GridView按钮的硬编码文本和一个点击按钮时触发的事件。如何做到这一点 到现在为止,我已经走到了这一步 但是我想将按钮文本显示为Read或Delete而不是Read/Delete列中的值。 我用过的代码 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="MID" DataSourceID="inbox" EnableModelValidation

Q>我想显示一个GridView按钮的硬编码文本和一个点击按钮时触发的事件。如何做到这一点

到现在为止,我已经走到了这一步

但是我想将按钮文本显示为ReadDelete而不是Read/Delete列中的值。 我用过的代码

<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>

如果希望文本显示为“删除”或“读取”,则不要将
DataTextField
属性设置为使用结果的
MID
属性,而是将
CommandName
属性设置为:

<asp:ButtonField ButtonType="Button" CommandName='<%#Eval("MMID")%>' HeaderText="Delete" 
  Text="Delete" />
现在将代码添加到后面:

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
  }
}    
更新

上面的代码不起作用。对男人来说,钮扣区就像乳头一样有用。改为使用ItemTemplateField,如下所示:

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

因为我需要一个MIDevent@Sourav检查我的更新。这将起作用,您将能够轻松检索MID属性。只有具有数据绑定事件的对象才支持错误数据绑定表达式。System.Web.UI.WebControl.ButtonField没有数据绑定事件。@Sourav提供了第二次更新。我感到困惑的是,
按钮字段
的行为与
的行为不一样,并且没有
数据绑定
事件,即使它应该这样做。数据源“收件箱”不支持正在删除的无用列,除非指定了DeleteCommand。万一我只需要在标签上显示MID怎么办?
 <asp:TemplateField>
     <ItemTemplate>
         <asp:Button ID="btn" runat="server" CommandName="Delete" CommandArgument='<%#Eval("MID") %>'
                    Text="Delete" />
     </ItemTemplate>
 </asp:TemplateField>
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")
        {

        }
    }