4

我有一个带有 BoundColumns 的 GridView。前 2 列是隐藏的,我想分别使用 gridView1.Rows[0].Cells[0].Text 和 gridView1.Rows[0].Cells[1].Text 访问它们,我得到一个空字符串。当列更改为可见时,我可以访问这些值。我已尝试按照其他一些论坛的建议将列宽更改为零,但这从未解决问题。有没有人对我可能做错了什么有任何指示。

4

3 回答 3

7

如果 Columns 是DataKeyNames集合的一部分,那么您应该从GridView.DataKeys[index].value属性中获取它们的值,如GridViewGuy 站点上所示。

但是,如果它们不是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;
于 2009-03-12T13:08:13.630 回答
1

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

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

display:'none'
于 2009-03-12T13:10:50.283 回答
1

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

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

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

.hiddencol
{
    display: none;
}
于 2011-02-24T22:41:29.853 回答