在GridView控件中将ID值传递给LinkButton服务器端事件

5

我尝试从我的GridView控件中的LinkButton传递一个CustomerID值到后台代码。我尝试了这里提出的解决方案,但它没有起作用。

我的GridView代码如下:

<asp:TemplateField HeaderText="Last Name, First Name">
    <ItemTemplate>
        <asp:LinkButton OnClick="EditCustomer" id="lbtnCustomerName" CommandName="CustomerName" Visible="true" runat="server" ToolTip="Click to edit customer."><%# DataBinder.Eval(Container.DataItem, "custLastName") + ", " + DataBinder.Eval(Container.DataItem, "custFirstName" + ", " + DataBinder.Eval(Container.DataItem, "custID")%></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>


protected void EditCustomer(Object sender, EventArgs e)
{

}

在EditCustomer事件中,我该如何获取custID的值?

难道不只是 sender.id 吗? - Major Productions
1个回答

10

您可以将 CustomerID 作为 CommandArgument 传递:

<asp:LinkButton OnClick="EditCustomer" id="lbtnCustomerName" 
     CommandArgument='<%#Eval("CustomerID")%>'
     CommandName="CustomerName"
     OnCommand="LinkButton_Command"
     Visible="true" runat="server"
     ToolTip="Click to edit customer."><%# DataBinder.Eval(Container.DataItem, "custLastName") + ", " + DataBinder.Eval(Container.DataItem, "custFirstName" + ", " + DataBinder.Eval(Container.DataItem, "custID")%>
</asp:LinkButton>

现在你可以处理 LinkButton 的 Command 事件

void LinkButton_Command(Object sender, CommandEventArgs e) 
{
   String CustomerID = e.CommandArgument.ToString();
}

谢谢Tim。后台代码会是什么样子?我收到了一个错误信息:“没有重载'EditCustomer'与委托'System.EventHandler'匹配”。 - DNR
@DotNetRookie:编辑了我的答案,展示了如何处理 LinkButton 的 Command 事件。 - Tim Schmelter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接