DataGrid 的 AutoGenerateColumns 属性的值为 true, 
对 DataGrid 进行绑定后, 使用 DataGrid1.Columns[1].Visible = false; 不能实现隐藏的效果,
程序报错: 
Index was out of range.  Must be non-negative and less than the size of the collection. Parameter name: index
=============================================================================
请问, 各位大哥, 如何隐藏 DataGrid 自动生成列中的某一列??

解决方案 »

  1.   

    你隐藏的列超出了范围了吧,假设才1列,你却隐藏第二列,当然出错了。datagrid的列是从0开始算的。
      

  2.   

    <asp:datagrid id="dg1" runat="server" CssClass="gbtext" Width="100%" AutoGenerateColumns="False"
    AllowPaging="True">
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" BackColor="#337FB2"></HeaderStyle>
    <Columns>
    <asp:BoundColumn Visible="False" DataField="id" HeaderText="序号"></asp:BoundColumn> <
    <asp:BoundColumn DataField="memo" HeaderText="备注"></asp:BoundColumn>
    <asp:HyperLinkColumn Text="编辑" DataNavigateUrlField="id" DataNavigateUrlFormatString="jxkh_a.aspx?id={0}&amp;flag=M"
    HeaderText="编辑"></asp:HyperLinkColumn>
    <asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
    </Columns>
    <PagerStyle Visible="False"></PagerStyle>
    </asp:datagrid>还可以在属性生成器里设置。直接将“可见”的复选框的钩去掉就可以了。
      

  3.   

    如果不动态绑定的
    DataTable dt = xxx.Get()
    dt.Colunms.RemoveAt(1);
      

  4.   

    大哥哥们, 谢谢您们热情的解答, 但你们没有看清楚小弟的问题, 
    请注意: 
      
        DataGrid 的 AutoGenerateColumns 属性的值为 true, DataGrid 是自动生成列, 请知道解决方法的大哥帮帮小弟, 不胜感激!!!
    ===========================================================================
    To: bobibobi(bbo)
    我要隐藏的列, 必须要绑定到 DataGrid 中, 所以不能在绑定 DataGrid 之前, 将其去掉================================================================
    To:  liuxin001() 
    我的要求是: 必须要在属性生成器里设置。直接将“可见”的复选框的钩 钩上
    ================================================================
      

  5.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
     e.Item.Cells[2].Visible=false;
    }