如何在ASP.NET中使用GridView中的隐藏Boundfield?

3
我正在使用asp.net中的DataSource绑定GridView,并且希望在RowDataBound函数中访问一些隐藏的BoundFields的值。 但是,当我将这些BoundFields的Visible设置为"False"时,在RowDataBound函数中这些值并没有被设定并且始终为空。
有没有办法实现这个需求?我看到一些建议将BoundField的样式设置为hidden,但这对我也没有起作用。理想情况下,我甚至不想在GridView中创建列,我只想隐藏这些值,以便我可以访问它们。谢谢!

1
直接使用“e.Row.DataItem”进行操作。第二个选项是使用不可见的TemplateFields。 - Tim Schmelter
1
我假设你已经尝试了除 Visible="True" 以外的所有内容,是吗?我不确定为什么 BoundField 还无法访问。 - Justin Morgan
抱歉回复晚了,周末没法查看。 - Drew
这个问题的回答对您有帮助吗?如何隐藏一个列(GridView),但仍然访问它的值? - Michael Freidgeim
3个回答

2

Odd,你是怎么做的呢?我知道以前可以使用以下方法:

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

1
从 OP 的描述中,听起来他正在使用 <asp:BoundColumn DataField="myHiddenField" Visible="false" />。 - Forgotten Semicolon
可能,我只是在说,我过去用这个取得了成功。 - RandomWebGuy

2

我建议您使用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]);

在 DataRow 绑定时:

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

Geetha是一个人名。

1

你尝试过使用传递给你的RowDataBound方法的GridViewRowEventArgs中的DataItem吗?

像这样:

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"]
    }
}

在此处查看MSDN。


我之前使用的是 if (e.Row.RowType == DataControlRowType.DataRow) { string Name = e.Row.Cells[5].Text; } 可能是为什么它没有工作的原因。 - Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接