如何在ASP.NET中设置GridView列的可见性?

时间:2009-03-27 07:45:19

标签: c# asp.net vb.net

我有一个对象列表List<UserDC>现在我想在某种网格中显示它,所以我尝试了GridView

GridView1.DataSource = list
GridView1.DataBind()

那确实有效,但现在我想隐藏一些列,但这似乎并不那么容易:

GridView1.Columns(0).Visible = False
GridView1.Columns(1).Visible = False
GridView1.Columns(2).Visible = False

这只是给了我一个异常ArgumentOutOfRangeException如何让它在显示列表之前生成列,以便我可以过滤掉那些我不想要的列?

3 个答案:

答案 0 :(得分:3)

要隐藏GridView列,您可以使用 GridView_RowDataBoundEvent 并隐藏不需要的列。

您可以通过检查此事件中的“RowType”属性来隐藏列标题,数据行或两者。

答案 1 :(得分:1)

对我来说工作正常。这是建议您检查。 由于这是VB .NET代码,我假设你有VS 2005或2008。 在GridView1.Columns(0).Visible = False

设置断点

使用Watch Window,为GridView1.Columns创建一个监视。展开“基数”,“计数”的价值是多少?它很可能是零,意味着你没有任何列。这可能是你有“ArgumentOutOfRangeException”的原因。

您的数据绑定到“列表”是否有效?

答案 2 :(得分:-1)

您可以将可见列设置为:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
   <asp:BoundField HeaderText="Property 2" DataField="Property1" />
   <asp:BoundField HeaderText="Property 2" DataField="Property2" />
</Columns>
</asp:GridView>

AutoGenerateColumns =“false”禁用公开数据源的所有属性/列。 BoundFields会将您的属性映射到网格列。