指定的参数已超出有效值的范围。参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index源错误: 
行 69:  private DropDownList ddl()
行 70:  {
行 71:  foreach (DataGridItem item in DataGridN.Controls[0].Controls)
行 72:  {
行 73:  if (item.ItemType == ListItemType.Footer
 

解决方案 »

  1.   

    DataGridN.Controls[0].Controls有问题吧,你看看里面有没有Controls
      

  2.   

    item  in   datagrid.items
      

  3.   

    private DropDownList ddl()
    行 70:  {
    行 71:  foreach (DataGridItem item in DataGridN.Items)
    行 72:  {
    行 73:  if (item.ItemType == ListItemType.Footer
    虽然这样不报错,但是找不到的为何不用DataGrid.FindControl(控件的id)
      

  4.   

    footer is not in DataGrid.Itemswhen you call foreach (DataGridItem item in DataGridN.Controls[0].Controls)is DataGridN databound already? Response.Write(DataGridN.Items.Count);    DataGridN.DataSource = dt.DefaultView;
        DataGridN.DataBind();    if (DataGridN.Items.Count > 0)
        {
          foreach (DataGridItem dgi in DataGridN.Controls[0].Controls)
    Response.Write(dgi.ItemType + "<BR>");
        }
    or   if (DataGridN.Items.Count > 0)
      {
        Table t = (Table)DataGridN.Controls[0];
        foreach (DataGridItem dgi in t.Rows)
        ....
      }
      

  5.   

    by the way, normally, footer will be in Table t = (Table)DataGridN.Controls[0];
    DataGridItem dgi = (DataGridItem)t.Rows[t.Rows.Count-1];
    if (dgi.ItemType == ListItemType.Footer)
    {
     //...
    }