Получить значения gridview из кода позади - PullRequest
1 голос
/ 14 января 2012

Я хочу получить значение скрытого поля в виде сетки из выделенного кода, но не использовать его в _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");

но это не сработало и возвращает только нулевое значение. Какое решение?

Ответы [ 2 ]

1 голос
/ 14 января 2012

Для каждой строки в вашем GridView есть HiddenField для ProductID.

Вы можете получить доступ к HiddenField строки (в примере ниже первой строки), используя следующий код (при условии, что HiddenField находится в первой ячейке):

HiddenField hiddenFieldProductID = 
           (HiddenField)gvShoppingCart.Rows[0].Cells[0].FindControl("lblProductID");

string productID = hiddenFieldProductID.Value

// Do something with the value

Надеюсь, это поможет.

0 голосов
/ 14 января 2012

Попробуйте заменить HiddenField на метку или текстовое поле и установить для атрибута visible значение false.Я пробовал это раньше, и это работает.

...