【问题标题】:How to use a hidden Boundfield in a GridView in ASP.NET?如何在 ASP.NET 的 GridView 中使用隐藏的 Boundfield?
【发布时间】:2011-06-25 20:41:51
【问题描述】:

我正在使用 asp.net 中的 DataSource 绑定 GridView,并且我想要一些隐藏的 BoundFields,以便我可以在我的 RowDataBound 函数中访问这些值。但是,当我在这些 BoundFields 上设置 Visible="False" 时,值不会被设置,并且在 RowDataBound 函数中始终为空白。

有没有办法做到这一点?我已经看到了一些将 BoundField 上的样式设置为隐藏的建议,但这对我也不起作用。理想情况下,我什至不希望在 gridview 中创建列,我只想隐藏这些值以便我可以访问它们。谢谢!

【问题讨论】:

  • 直接使用e.Row.DataItem。第二种选择是使用不可见的 TemplateFields。
  • 我假设您已经尝试过除Visible="True" 之外的所有内容,对吧?我不确定为什么 BoundField 仍然无法访问。
  • 对不起,我花了这么长时间才回复,周末没能查到。

标签: asp.net gridview boundfield


【解决方案1】:

为此,我建议您使用 DataKey。

请参考此链接http://www.codeproject.com/KB/grid/Data_presentation.aspx

例如:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"

DataKeyNames="emp_id,Code">

int EmployeeID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0]);
  int DepartementID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[1]);

在数据行绑定中:

((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString();

吉萨

【讨论】:

    【解决方案2】:

    您是否尝试过使用 GridViewRowEventArgs 中的 DataItem 传递给您的 RowDataBound 方法?

    喜欢:

    protected void MyGridView_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRowView rowView = (DataRowView)e.Row.DataItem;
            // do something with rowView["myHiddenField"]
        }
    }
    

    Check MSDN here.

    【讨论】:

    • 我以前使用 if (e.Row.RowType == DataControlRowType.DataRow) { string Name = e.Row.Cells[5].Text; } 这可能是它不起作用的原因
    【解决方案3】:

    奇怪,你是怎么做到的?我知道我在使用之前已经这样做了:

    <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("ColumnName")%>'/>
    

    【讨论】:

    • 从 OP 描述看,他好像在用
    • 可能,我只是说,我过去在这方面取得了成功。
    猜你喜欢
    • 2013-11-20
    • 2016-12-06
    • 2013-02-05
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2014-09-06
    相关资源
    最近更新 更多