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

发布于 2024-07-15 03:08:02 字数 208 浏览 7 评论 0原文

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

I have a GridView with BoundColumns. The first 2 columns are hidden and I would like to access them using gridView1.Rows[0].Cells[0].Text and gridView1.Rows[0].Cells[1].Text respectively and I get a empty string. When the columns are changed to visible, then I can access the values.
I have tried changing the column width to zero as suggested on some other forums but that never fixed the problem. Does any one have any pointers as to what I may be doing wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

许仙没带伞 2024-07-22 03:08:03

如果列是 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;

If the Columns are part of the DataKeyNames collection, then you should get their values from the GridView.DataKeys[index].value property, as demonstrated on the GridViewGuy site.

If however, they are not part of the DataKeyNames collection, then you can use the following hack to make sure that the value is persisted in ViewState (as opposed to normal behaviour for hidden fields in 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;
屋檐 2024-07-22 03:08:03

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

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

display:'none'

This is typical behaviour in ASP.NET, Visible = false, only makes the control available in code-behind.

The best for this would be to apply the following style on that column:

display:'none'
少跟Wǒ拽 2024-07-22 03:08:03

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

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

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

.hiddencol
{
    display: none;
}

Add the css class hiddencol to the column you want to hide. Add hiddencol class to your css and you're good to go.

You can still access the column in your code behind but it isn't displayed on your page.

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

.hiddencol
{
    display: none;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文