Kri*_*ppa 2 c# asp.net gridview
GridViewRow clickedRow = ((LinkButton)sender).NamingContainer as GridViewRow;
Label lblUser = clickedRow.FindControl("lblFullName") as Label;
Label lblUserId = (Label)clickedRow.FindControl("lblUserId");
Run Code Online (Sandbox Code Playgroud)
编译器抛出错误为
无法转换类型为“System.Web.UI.WebControls.GridView”的对象
您当前代码的问题是 GridView 的RowCommand事件是由 gridview 本身引发的,而不是由单个控件引发的,因此您的转换将失败:-
(LinkButton)sender
Run Code Online (Sandbox Code Playgroud)
因为这里的发送者是Gridview而不是链接按钮。
现在,您的 gridview 中可能有多个可以引发此事件的控件(或者您将来可能添加它们),因此CommandName向您的 LinkButton 添加一个属性,如下所示:-
<asp:LinkButton ID="myLinkButton" runat="server" Text="Status"
CommandName="myLinkButton"></asp:LinkButton>
Run Code Online (Sandbox Code Playgroud)
最后,在RowCommand事件中,您可以首先检查事件是否由 a 引发LinkButton,然后安全地使用 ae.CommandSource属性,LinkButton并从那里找到 Gridview 的包含行。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "myLinkButton")
{
LinkButton lnk = (e.CommandSource) as LinkButton;
GridViewRow clickedRow = lnk.NamingContainer as GridViewRow;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3370 次 |
| 最近记录: |