无法访问 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>

最佳答案

您需要在 FindControlNamingContainer 上使用 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/

10-11 06:00