2010-03-29 55 views
2

我想添加一列到包含按钮控件的gridview。我使用ID(整数和主键)作为Gridview的第一列。我想的是,当用户点击GridView中的任何给定行的按钮,我希望能够确定该点击按钮所属ASP.NET C#在gridview记录中显示按钮

VAM业

回答

4

在模板行的ID您网格视图,将按钮的CommandArgument属性绑定到行的ID。然后在按钮单击事件上,从事件参数中检查commandArgument属性。这会给你的ID

1

要伴随着@ Midhat的答案去,这里是一些示例代码:

代码隐藏:

public partial class _Default : System.Web.UI.Page 
{ 
    List<object> TestBindingList; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    if (!IsPostBack) 
    { 
     TestBindingList = new List<object>(); 
     TestBindingList.Add(new { id = 1, name = "Test Name 1" }); 
     TestBindingList.Add(new { id = 2, name = "Test Name 2" }); 
     TestBindingList.Add(new { id = 3, name = "Test Name 3" }); 

     this.GridView1.DataSource = TestBindingList; 
     this.GridView1.DataBind(); 
    } 

    } 

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    {   
    if (e.CommandName == "Select") 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
     this.Label1.Text = this.GridView1.DataKeys[index]["id"].ToString(); 
    } 
    } 
} 

的标记:

<form id="form1" runat="server"> 
<asp:GridView ID="GridView1" runat="server" 
    onrowcommand="GridView1_RowCommand" DataKeyNames="id"> 
    <Columns> 
     <asp:TemplateField HeaderText="ButtonColumn"> 
      <ItemTemplate> 
       <asp:Button ID="Button1" runat="server" CausesValidation="false" 
        CommandName="Select" Text="ClickForID" 
        CommandArgument="<%# ((GridViewRow)Container).RowIndex %>" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
<asp:Label ID="Label1" runat="server" Text="ID"></asp:Label> 


</form>