【问题标题】:Binding GridView after removing column删除列后绑定 GridView
【发布时间】:2025-12-20 13:35:11
【问题描述】:

我在一次回发时从我的 GridView 中删除列,并在第二次回发时将其绑定。 在页面呈现时绑定后,它不会显示我的 GridView。

当我使用 ASP.NET 3.5 时,相同的代码段正在工作,但在 4.0 中它不显示 GridView。谁能告诉我为什么会发生这种情况?

提前致谢。

.aspx 代码:

<asp:GridView>
<Columns>
<asp:BoundField HeaderText="StudName" DataField="Name" />
<asp:BoundField HeaderText="StudAddress" DataField="Address" />
<asp:BoundField HeaderText="StudPhNo" DataField="PhNo" />
</Columns>
</asp:GridView>

服务器端代码:

Button1_Click(object sender, EventArgs e)
{
   //removes all columns ffrom grid.
    for(int i=0;i<gridview1.Columns.Count;i++)
        gridview1.Columns.RemoveAt(0);
}



Button2_Click(object sender, EventArgs e)
{
    gridview1.DataSource = StudList;
    //corrected name of grid
    gridview1.DataBind();
}

【问题讨论】:

  • 你到底想在这里做什么?您是否要删除所有列(使 GridView 不可见)?
  • 是的,但我很想知道为什么这个 scode 段在 asp.net 2.0 中显示我的网格而在 asp.net 4.0 中不显示
  • 两个都可以测试,今天就试一试。

标签: asp.net gridview asp.net-4.0


【解决方案1】:

您的代码示例显示您运行了一个不必要的 for 循环来删除第 0 列。如果您只打算删除第一列,我会删除此循环。使用RemoveAt(0) 将始终引用您的第一列,一旦您删除了Columns[0],您的下一列将变为Columns[0],这将删除您的列。

此外,您正在为 gridview1 GridView 指定一个数据源,然后尝试使用单独的 DataBind() GridViewgridview

如果你想隐藏一列,我建议你这样做:

gridview1.Columns[0].Visible = false;

其中 0 是您的列索引。

【讨论】: