Sda.SelectCommand = new SqlCommand();
        Sda.SelectCommand.Connection = conn;
        Sda.SelectCommand.CommandText = "qq";
        Sda.SelectCommand.CommandType = CommandType.StoredProcedure;
        Sda.SelectCommand.Parameters.Add(new SqlParameter("@FDATE", SqlDbType.DateTime)).Value = quaryDate;
        Sda.Fill(Ds, "qq");
        DataTable newTb = new DataTable();
        for (int i = 0; i < Ds.Tables["qq"].Rows.Count; i++)
        {
            DataRow newDatarow = newTb.NewRow();            for (int j = 0; j < Ds.Tables["qq"].Columns.Count; j++)
            {
                if (Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() == "A001")
                    newDatarow[j] = Ds.Tables["qq"].Rows[i][j].ToString() + "%";            }
        }
        DataList1.DataSource = newTb.DefaultView;
        DataList1.DataBind();
在执行红色部分的时候报错:用户代码未处理 indexoutofrangeexception  无法找到2  其中 row=7,column=18 为什么找不到2 
请高手指教,谢谢 

解决方案 »

  1.   

    可能是newDatarow[j]超出了數組的最大值吧
      

  2.   

    ---------------------------- 
    for (int i = 0; i < Ds.Tables["qq"].Rows.Count; i++) 
            { 
                DataRow newDatarow = newTb.NewRow();             for (int j = 0; j < Ds.Tables["qq"].Columns.Count; j++) 
                { 
                    if (Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() == "A001") 
                        newDatarow.Columns.add(Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() )
                    newDatarow[Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() ] = Ds.Tables["qq"].Rows[i][Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() ].ToString() + "%";  
                } 
            } 
    --------------------------------------
    看看这个,Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() 这一长串可以声明一个变量看了估计会清楚点......
      

  3.   

    if (Ds.Tables["qq"].Columns[j].ColumnName.ToUpper() == "A001") 
    红色部分不论改成任何列名,运行到此句时,都是无法找到‘几 ’到底什么原因阿? 好闷哦
      

  4.   

    去掉个循环,改成这样,看还报错不
    for (int i = 0; i < Ds.Tables["qq"].Rows.Count; i++) 

        DataRow newDatarow = newTb.NewRow(); 
        newDatarow[j] = Ds.Tables["qq"].Rows[i]["A001"].ToString() + "%"; 
    }