Могут ли данные храниться в динамически связанных невидимых полях GridView? - PullRequest
1 голос
/ 16 ноября 2010

У меня есть выражение запроса, которое я связываю с GridView в Page_Load.Данные, которые я хочу захватить в событии SelectedIndexChaned, находятся в BoundField, определенном следующим образом:

<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" 
                            SortExpression="ID" Visible="False"  />

Если я установлю Visible = "True", у меня не будет проблем с получением этих данных.Есть ли способ скрыть поле идентификатора и получить данные?

1 Ответ

4 голосов
/ 16 ноября 2010

Зависит от того, как вы пытаетесь получить данные. Если это поле идентификатора, уникальное для каждой строки в источнике данных, используйте DataKeyNames = "ID" в объявлении GridView. Затем в приведенном ниже коде всякий раз, когда вам нужен идентификатор, вы можете использовать следующую строку:

string ID = GridView1.Rows[GridRowIndex].DataKeys[0].Value.ToString();

Вы также можете преобразовать одно из ваших BoundFields в TemplateField и поместить в него HiddenField для хранения идентификатора. Вот так:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="someOtherDataLabel" runat="server" />
        <asp:HiddenField ID="IDHiddenField" runat=server />
    </ItemTemplate>
</asp:TemplateField>

Тогда вы можете использовать FindControl() в событии RowDataBound GridView для хранения значения идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...