【问题标题】:Can data be kept in a dynamically bound GridView's invisible fields?数据可以保存在动态绑定的 GridView 的不可见字段中吗?
【发布时间】:2010-11-16 15:36:31
【问题描述】:

我有一个查询表达式,我将它绑定到 Page_Load 中的 GridView。我想在 SelectedIndexChaned 事件中捕获的数据位于这样定义的 BoundField 中:

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

如果我设置 Visible="True",我可以轻松获取这些数据。有没有办法隐藏 ID 字段并仍然获取数据?

【问题讨论】:

    标签: asp.net data-binding gridview


    【解决方案1】:

    取决于您尝试获取数据的方式。如果这是数据源中每一行的唯一 ID 字段,请在 GridView 声明中使用 DataKeyNames = "ID"。然后,在后面的代码中,每当需要 ID 时,都可以使用以下行:

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

    您还可以将其中一个 BoundFields 转换为 TemplateField,并在其中放置一个 HiddenField 来存储 ID。像这样:

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

    那么你可以在GridView的RowDataBound事件中使用FindControl()来存储ID值。

    【讨论】:

    • 你的第二种方法很有效。 Intellisense 不同意第一个。谢谢一百万。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多