ASP Grid View中不可见的绑定列无法访问

4

我有一个带有BoundColumns的GridView。前两列是隐藏的,我想使用gridView1.Rows [0] .Cells [0] .Text和gridView1.Rows [0] .Cells [1] .Text访问它们,但是我得到了一个空字符串。当这些列变为可见时,我就可以访问值了。 我尝试将列宽更改为零,如一些其他论坛上建议的那样,但这并没有解决问题。有人能指出我可能做错了什么吗?

3个回答

7
如果这些列是DataKeyNames集合的一部分,那么您应该从GridView.DataKeys[index].value属性中获取它们的值,正如GridViewGuy站点所示。
但是,如果它们不是DataKeyNames集合的一部分,则可以使用以下技巧来确保该值在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

将CSS类hiddencol添加到您想要隐藏的列中。将hiddencol类添加到您的CSS中,然后您就可以开始了。

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

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

.hiddencol
{
    display: none;
}

1

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

对于此问题,最好的解决方法是在该列上应用以下样式:

display:'none'

考虑到它在HTML中呈现为表格,而表格是按行定向的,你能否在列上设置display:none样式?我不是说你不能,只是我从未尝试过!它会在列中的每个td单元格上呈现display:none样式吗? - Andrew Rollings
既然你提到了,我想知道...它可能会将样式放在TD上,不确定是否有效。谢谢 :) - leppie

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