grRule.DataSource = rulemanage.GetAllRule("tb_rule").Tables[0].DefaultView;
            grRule.DataKeyNames = new string[] { "ruleid" };
            grRule.DataBind();
            for (int i = 0; i < rulemanage.GetAllRule("tb_rule").Tables[0].Rows.Count; i++)
            {
                grRule.Rows[i].Cells[1].Text = SubStr(rulemanage.GetAllRule("tb_rule").Tables[0].Rows[i][1].ToString(), 8);
                grRule.Rows[i].Cells[2].Text = SubStr(rulemanage.GetAllRule("tb_rule").Tables[0].Rows[i][2].ToString(), 8);
            }
当gridview分页页数超过两页时
grRule.Rows[i].Cells[1].Text = SubStr(rulemanage.GetAllRule("tb_rule").Tables[0].Rows[i][1].ToString(), 8);
提示索引超出范围。必须为非负值并小于集合大小。错误。
请高手帮忙。
最好有代码。

解决方案 »

  1.   

    for (int i = 0; i <grRule.Rows.Count; i++)
      {
      grRule.Rows[i].Cells[1].Text = SubStr(rulemanage.GetAllRule("tb_rule").Tables[0].Rows[i][1].ToString(), 8);
      grRule.Rows[i].Cells[2].Text = SubStr(rulemanage.GetAllRule("tb_rule").Tables[0].Rows[i][2].ToString(), 8);
      }
      

  2.   

    假如你的table有100行你的GV每頁只顯示20行你翻到第三頁的時候 GV怎麼能找到 第21行嘛你的循環改成 grRule。Rows。Count,不要用Table。Rows。Count