我想从代码隐藏中获取网格视图中隐藏字段的值,但不能在_RowDataBound
或任何其他类似方法中使用。这是我现在的代码(这是一个购物车场景):
<asp:GridView ID="gvShoppingCart"
runat="server"
AutoGenerateColumns="False"
AllowPaging="True"
DataKeyNames="ID"
ShowFooter="true">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="lblProductID" runat="server" Text='<%# Eval("ProductID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Product">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("ProductID", "product_details.aspx?id={0}") %>'
Text='<%# GetProduct(Eval("ProductID")) %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox ID="txtQuantity" runat="server" Width="35" CssClass="input" onkeypress="return isNumberKey(event)" AutoPostBack="true" ontextchanged="txtQuantity_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
为了简洁起见,我删除了某些字段,因为它们仅用于显示。数量字段用于用户输入数字以将多个产品添加到他的购物车。我希望访问lblProductID
事件中的_TextChanged
标签。在同一事件中,我尝试了
Label lblProductID = (Label)gvShoppingCart.FindControl("lblProductID");
但它不起作用,只返回一个空值。解决方案是什么?
答案 0 :(得分:1)
对于GridView
中的每一行,ProductID都有一个HiddenField
。
您可以使用以下代码访问行中的HiddenField
(在第一行下方的示例中)(假设您的HiddenField
位于第一个单元格中):
HiddenField hiddenFieldProductID =
(HiddenField)gvShoppingCart.Rows[0].Cells[0].FindControl("lblProductID");
string productID = hiddenFieldProductID.Value
// Do something with the value
希望,这有帮助。
答案 1 :(得分:0)
尝试将HiddenField替换为标签或文本框,并将可见属性设置为false。 我之前尝试过这个并且它有效。