我试图在listview中简单地阅读一个文本框。它是一个购物车,我需要在新数量"时自动编辑cookie。键入。我试图使用我为dropdownbox所做的操作,但我猜是因为我手动绑定数据而不是使用数据源是阻止我访问的区别到文本框中的值。
奇怪的是,它没有变为空,它只是没有得到任何价值?我已在标签上添加了其他内容,因此我知道并非我如何调用标签。我在网上找到的所有结果都是调用无效的东西,例如listview1.items [0] .subitems [0],这些不是我可以调用的成员。
非常感谢任何帮助
按钮处理程序
protected void editQ_Click(Object sender, CommandEventArgs e)
{
LinkButton lbSender = (LinkButton)sender;
TextBox tb = (TextBox)lbSender.FindControl("tb1"); // this is the textbox
productTableAdapter ad = new productTableAdapter();
int idIn = int.Parse(e.CommandArgument.ToString());
HttpCookie c = Request.Cookies["cart"];
Label2.Text = tb.Text.ToString();
// Label2.Text = tb.Text; doesn't work either.
if (tb == null)
{
Label2.Text = "NULL ERROR";
}
....
}
列表视图
<asp:ListView ID="ListView1" runat="server" DataKeyNames="productNo"
>
<AlternatingItemTemplate>
<span style="">productNo:
<asp:Label ID="productNoLabel" runat="server" Text='<%# Eval("productNo") %>' />
<br />
Name:
<asp:Label ID="productNameLabel" runat="server" Text='<%# Eval("productName") %>' />
<br />
Quantity:
<asp:Label ID="productQuantityLabel" runat="server" Text='<%# Eval("Quantity") %>' />
<asp:TextBox id = "tb1" runat="server"></asp:TextBox>
<asp:LinkButton id="editQ" runat="server" CommandArgument='<%# Eval("productNo") %>' onCommand ="editQ_Click">Change Quantity</asp:LinkButton>
<br />
price:
<asp:Label ID="priceLabel" runat="server" Text='<%# Eval("price") %>' />
<br />
<asp:Image ID = "img" runat="server" height = "150" ImageUrl='<%# Eval("imgURL")%>'></asp:Image>
<br />
<br /></span>
</AlternatingItemTemplate>
答案 0 :(得分:2)
FindControl
用于查找容器中的控件。从您的标记,LinkButton不是您的文本框的容器。您的文本框位于ListView
试试这个,我不确定
TextBox tb = (TextBox)lbSender.NamingContainer.FindControl("tb1");