从代码背后获取网格视图值

本文关键字:视图 网格 获取 代码 背后 | 更新日期: 2023-09-27 18:20:29

我想从代码后面获得网格视图中隐藏字段的值,但不能用于_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>

为了简洁起见,我删除了某些字段,因为它们只用于显示。Quantity字段用于用户输入一个数字,以便将多个产品添加到他的购物车中。我希望访问_TextChanged事件中的lblProductID标签。在同一事件中,我尝试了

Label lblProductID = (Label)gvShoppingCart.FindControl("lblProductID");

但它不起作用,只返回一个null值。解决方案是什么?

从代码背后获取网格视图值

对于GridView中的每一行,ProductID都有一个HiddenField

您可以使用以下代码访问一行的HiddenField(在第一行下面的示例中)(假设您的HiddenField在第一个单元格中):

HiddenField hiddenFieldProductID = 
           (HiddenField)gvShoppingCart.Rows[0].Cells[0].FindControl("lblProductID");
string productID = hiddenFieldProductID.Value
// Do something with the value

希望,这有帮助。

尝试将HiddenField替换为标签或文本框,并将visible属性设置为false。我以前试过这个,效果很好。