日期:2014-05-17  浏览次数:20488 次

For循环索引超出范围?只能添加三个节点,超过就该报错了
如题所示,这是这一段的代码
for (int i = 3; i < ListNode.Count + 3; i++)
            {
                this.grdList.Columns[i].HeaderText = ListNode[i - 3].Text;
                this.grdList.Columns[i].Visible = true;
            }
ListNode.Count 只能为1,2,3的时候可以,超过3就报上面的错误,在线等。
------最佳解决方案--------------------
肯定是索引超出了,你能保证Columns[i]存在吗
------其他解决方案--------------------
     this.grdList.Columns[i]这个超出索引了,和for没关系
------其他解决方案--------------------
引用:
引用:this.grdList.Columns[i]这个超出索引了,和for没关系那怎么解决呢?


上面已经说了好多了,你不能看下么
------其他解决方案--------------------
你把     循环node的for  和   循环grdList的for  分开

理清关系就ok了
------其他解决方案--------------------
this.grdList.Columns[i - 3]
------其他解决方案--------------------
应该是grdList只有6列导致的
------其他解决方案--------------------
引用:
肯定是索引超出了,你能保证Columns[i]存在吗
gridview的列是根据我查出的数据动态生成的,他可能是2列,也可能是3列,或9列
------其他解决方案--------------------
引用:
this.grdList.Columns[i - 3]
不是这样的,我 前三列已经设置值了,自动添加是从第四列开始的
------其他解决方案--------------------
引用:
this.grdList.Columns[i]这个超出索引了,和for没关系
那怎么解决呢?
------其他解决方案--------------------
你确认有9列么?下个端点看看。
------其他解决方案--------------------
这是我gridview的列设置
 <Columns>
                            <asp:TemplateField HeaderText='费用项' SortExpression="WBMCode">
                                <ItemTemplate>
                                    <%# Eval("WBMCode") == null ? "" : Eval("WBMCode").ToString()%>
                                </ItemTemplate>
                                <HeaderStyle HorizontalAlign="Center" />
                                <ItemStyle HorizontalAlign="Left" />