[英]Unable to cast object of type 'System.Web.UI.WebControls.ContentPlaceHolder' to type 'System.Web.UI.WebControls.GridViewRow'
I am getting the error on OnSelectedIndexChanging 我在OnSelectedIndexChanging上遇到错误
My aspx file 我的aspx文件
<asp:GridView CssClass="table table-striped table-hover" ID="product_all_detail_list" runat="server" OnSelectedIndexChanging="product_detail_list_SelectedIndexChanging" OnSelectedIndexChanged="product_all_detail_list_SelectedIndexChanged" >
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:TemplateField HeaderText="ID" Visible="false">
<ItemTemplate>
<asp:Label ID="lb_id" runat="server" Text='<%#Eval("Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
The code behind 背后的代码
protected void product_detail_list_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
Button btn = sender as Button;
// GridViewRow row = btn.NamingContainer as GridViewRow;
GridViewRow row = (GridViewRow)(((Control)sender).NamingContainer);
all_details.Visible = true;
Label id = (Label)row.FindControl("lb_id");
dal.Fillgrid(product_all_detail_list, q);
}
Is the code is correct? 代码是否正确? I also tried for
GridViewRow row = btn.NamingContainer as GridViewRow;
我也尝试了
GridViewRow row = btn.NamingContainer as GridViewRow;
but getting an error like Object reference not set to an instance of an object.
但收到诸如
Object reference not set to an instance of an object.
类的错误, Object reference not set to an instance of an object.
your btn is not inside the GridView when you call btn.NamingContainer it will give ContentPlaceHolder object. 当您调用btn.NamingContainer时,您的btn不在GridView中,它将提供ContentPlaceHolder对象。
you will get an exception when you cast ContentPlaceHolder to GridViewRow 当您将ContentPlaceHolder转换为GridViewRow时,将获得异常
try with SelectedIndex like below to get the selected row. 尝试如下所示的SelectedIndex获取选定的行。
GridViewRow row = product_all_detail_list.Rows[product_all_detail_list.SelectedIndex];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.