无法访问不可见时ASP Grid视图中的绑定列

时间:2009-03-12 12:46:04

标签: asp.net gridview boundcolumn

我有一个带有BoundColumns的GridView。前两列是隐藏的,我想使用gridView1.Rows [0] .Cells [0] .Text和gridView1.Rows [0] .Cells [1] .Text分别访问它们,我得到一个空字符串。当列更改为可见时,我可以访问这些值。 我已经尝试将列宽更改为零,正如其他一些论坛所建议的那样,但从未修复过这个问题。是否有任何人对我可能做错的事情有任何指示。

3 个答案:

答案 0 :(得分:7)

如果列是DataKeyNames集合的一部分,那么您应该从GridView.DataKeys[index].value属性中获取其值,如GridViewGuy site所示。

但是,如果它们不是DataKeyNames集合的一部分,那么您可以使用以下hack来确保该值在ViewState中保持不变(与ASP.NET 2中隐藏字段的正常行为相反) +)

GridView1.DataSource = myDataSource;
// Set the column visibility to true before Databinding

GridView1.Columns[0].Visible = true;
GridView1.Columns[1].Visible = true;
GridView1.DataBind()

// Set the column visibility to false after Databinding
GridView1.Columns[0].Visible = false;
GridView1.Columns[1].Visible = false;

答案 1 :(得分:1)

这是ASP.NET中的典型行为,Visible = false,只能使控件在代码隐藏中可用。

最好的方法是在该列上应用以下样式:

display:'none'

答案 2 :(得分:1)

将css类hiddencol添加到要隐藏的列中。将hiddencol课程添加到您的CSS中,您就可以开始了。

您仍然可以访问代码中的列,但它不会显示在您的页面上。

<asp:BoundField DataField="Site_ID" ItemStyle-CssClass="hiddencol" />

.hiddencol
{
    display: none;
}