无法访问 ListView 中的控件
错误
你调用的对象是空的。
.cs
public void lnkaddtocart_Command(Object sender, CommandEventArgs e)
{
((TextBox)ListView_ProductDetails.FindControl("txtbox_pqty")).Visible = false;
}
.aspx
<asp:ListView runat="server" ID="ListView_ProductDetails">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<div class="qty">
Qty:
<asp:TextBox ID="txtbox_pqty" Text="1" runat="server"/>
<input type="hidden" name="product_id" size="2" value="41" />
<asp:LinkButton ID="lnkaddtocart" runat="server"
CommandArgument='<%#Eval("pid") %>'
OnCommand="lnkaddtocart_Command"
cssclass="button">
<span>Add to Cart</span>
</asp:LinkButton>
</div>
</ItemTemplate>
</asp:ListView>
最佳答案
您需要在 FindControl
的 NamingContainer
上使用 TextBox
,它是 ListViewItem
而不是 ListView
。因此,您可以使用 LinkButton's
NamingContainer
属性来查找 ListViewItem
。
var ctrl = (Control) sender;
var lvi = (ListViewItem) ctrl.NamingContainer;
var txt = (TextBox)lvi.FindControl("txtbox_pqty");
txt.Visible = false;
关于asp.net - 无法访问 ListView 中的控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12949637/