各位大大,我想通过一个方法来指定隐藏列,但是运行的时候老是出错“指定的参数已超出有效值的范围”,请问各位大大问题出在哪里了呀,大概代码如下
             <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                 AutoGenerateColumns="False" DataKeyNames="id"   CssClass="Fontsmall"
                 onpageindexchanging="GridView1_PageIndexChanging" 
                 onrowdatabound="GridView1_RowDataBound" Width = "100%" 
                 onrowcommand="GridView1_RowCommand" 
                 onrowcreated="GridView1_RowCreated"  >
   <Columns>
 <asp:TemplateField HeaderText = "设备情况1" >
                         <ItemTemplate>
                        <asp:Image ID="Image1" runat="server"  ImageUrl ='<%# GetUrl( (string)Eval("qk1")) %>'/>
 
                    </ItemTemplate>
                </asp:TemplateField>
                       <asp:TemplateField HeaderText = "设备情况2" >
                         <ItemTemplate>
                        <asp:Image ID="Image2" runat="server"  ImageUrl ='<%# GetUrl( (string)Eval("qk2")) %>'/>
 
                    </ItemTemplate>
                </asp:TemplateField>
   </Columns>
</GridView>后台代码 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[0].Visible = false;
        e.Row.Cells[1].Visible = false;
    }

解决方案 »

  1.   

    一行就2个单元格,你全部要visible,你让gridview干嘛呢
      

  2.   

    这个只是代码片段,完整的有十多列呢,不是因为隐藏 了所有列吧,就算
    e.Row.Cells[0].CssClass = red;
    也是报这个错误.....
      

  3.   

     if (e.Row.RowType == DataControlRowType.DataRow)
                {
        e.Row.Cells[0].Visible = false;
            e.Row.Cells[1].Visible = false;}
    添加个if条件  代码放里面
      

  4.   

    可以了,先谢谢了,我可以理解成不用行类型判断的话是不是在一开始建立行的时候没有添加任何列,
    所以Cell[0]是无效的,能顺便问一下,要怎么隐藏列头吗?
      

  5.   

    嘿嘿找到个更好的方法,谢谢啦~~~GridView1.Columns[4].Visible = false;