我有一个对象列表List<UserDC>
现在我想在某种网格中显示它,所以我尝试了GridView
GridView1.DataSource = list
GridView1.DataBind()
那确实有效,但现在我想隐藏一些列,但这似乎并不那么容易:
GridView1.Columns(0).Visible = False
GridView1.Columns(1).Visible = False
GridView1.Columns(2).Visible = False
这只是给了我一个异常ArgumentOutOfRangeException
如何让它在显示列表之前生成列,以便我可以过滤掉那些我不想要的列?
答案 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会将您的属性映射到网格列。