异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index源错误: 
行 115: 
行 116:
行 117: string   updateCmd="UPDATE   Csmx   set  dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+"  where    DataGrid1.DataKeys[e.Item.ItemIndex]='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";   
行 118: SqlConnection con=new SqlConnection(conStr);
行 119: SqlCommand   myCommand=new  SqlCommand(updateCmd,con);   
 
相关代码:
protected void DataGrid1_Update(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) {   string  conStr = ConfigurationSettings.AppSettings["connString"];
    //int getcsbh=(int)DataGrid1.DataKeys[(int)e.Item.ItemIndex];
string strdlb = ((TextBox)e.Item.Cells[0].Controls[0]).Text; 
string strmc = ((TextBox)e.Item.Cells[2].Controls[0]).Text; 
string strdh = ((TextBox)e.Item.Cells[3].Controls[0]).Text; 
string strllr = ((TextBox)e.Item.Cells[4].Controls[0]).Text; 
string stryddh = ((TextBox)e.Item.Cells[5].Controls[0]).Text; 
string strlxdz = ((TextBox)e.Item.Cells[6].Controls[0]).Text; 
string strcz = ((TextBox)e.Item.Cells[7].Controls[0]).Text; 
 

string   updateCmd="UPDATE   Csmx   set  dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+"  where    DataGrid1.DataKeys[e.Item.ItemIndex]='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";   
SqlConnection con=new SqlConnection(conStr);
SqlCommand   myCommand=new  SqlCommand(updateCmd,con);   
myCommand.Connection.Open();   
myCommand.ExecuteNonQuery();   
DataGrid1.EditItemIndex=-1;   
GetSqlData();
}
private void GetSqlData()
{
   
string  conStr = ConfigurationSettings.AppSettings["connString"];
string strsql= "select * from Csmx where mc like '%"+mc.Text.ToString()+"%'  AND dlb like '%"+DropDownList1.SelectedItem.Value+"%' ";
SqlConnection cxconn=new SqlConnection( conStr);
SqlDataAdapter cxAdapter = new SqlDataAdapter(strsql,cxconn);
cxconn.Open();
DataSet cxSet=new DataSet();
cxAdapter.Fill(cxSet,"Csmx");
DataGrid1.DataSource=cxSet;
DataGrid1.DataBind();
}
请老鸟帮忙!看看如何解决!

解决方案 »

  1.   

    string   updateCmd="UPDATE   Csmx   set  dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+"  where    DataGrid1.DataKeys[e.Item.ItemIndex]='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";
    这句有问题
    DataGrid1.DataKeys[e.Item.ItemIndex]不应写在引号里面
    应该e.Item.Cells[1].Controls[0]这里的索引值不对,设断点调试很容易查出来的啊
      

  2.   

    string updateCmd="UPDATE Csmx set dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+" where DataGrid1.DataKeys[e.Item.ItemIndex]='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";
    在Where 后面有问题吧
    string updateCmd="UPDATE Csmx set dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+" where“ + DataGrid1.DataKeys[e.Item.ItemIndex](或你的KEY变量) + ”='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";
      

  3.   

    可以具体说说where后面该怎么写吗?谢谢!
      

  4.   

    我改后问题还是没解决!请哪位老鸟帮忙看下!谢谢!protected void DataGrid1_Update(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) {   string  conStr = ConfigurationSettings.AppSettings["connString"];
        //int getcsbh=(int)DataGrid1.DataKeys[(int)e.Item.ItemIndex];
                string getcsbh=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    string strdlb = ((TextBox)e.Item.Cells[0].Controls[0]).Text; 
    string strmc = ((TextBox)e.Item.Cells[2].Controls[0]).Text; 
    string strdh = ((TextBox)e.Item.Cells[3].Controls[0]).Text; 
    string strllr = ((TextBox)e.Item.Cells[4].Controls[0]).Text; 
    string stryddh = ((TextBox)e.Item.Cells[5].Controls[0]).Text; 
    string strlxdz = ((TextBox)e.Item.Cells[6].Controls[0]).Text; 
    string strcz = ((TextBox)e.Item.Cells[7].Controls[0]).Text; 
     

    string   updateCmd="UPDATE   Csmx   set  dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+"  where   getcsbh ='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";   
    SqlConnection con=new SqlConnection(conStr);
    SqlCommand   myCommand=new  SqlCommand(updateCmd,con);   
    myCommand.Connection.Open();   
    myCommand.ExecuteNonQuery();   
    DataGrid1.EditItemIndex=-1;   
    GetSqlData();
    }
      

  5.   

    现在提示:异常详细信息: System.Data.SqlClient.SqlException: 在关键字 'where' 附近有语法错误。源错误: 
    行 122: SqlCommand   myCommand=new  SqlCommand(updateCmd,con);   
    行 123: myCommand.Connection.Open();   
    行 124: myCommand.ExecuteNonQuery();   
    行 125: DataGrid1.EditItemIndex=-1;   
    行 126: GetSqlData();
     
    我代码以改为:
    protected void DataGrid1_Update(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) {   string  conStr = ConfigurationSettings.AppSettings["connString"];
        //int getcsbh=(int)DataGrid1.DataKeys[(int)e.Item.ItemIndex];
               // string getcsbh=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    string strcsbh = e.Item.Cells[1].Text.ToString();  
    string strdlb = ((TextBox)e.Item.Cells[0].Controls[0]).Text.ToString(); 
    string strmc = ((TextBox)e.Item.Cells[2].Controls[0]).Text.ToString(); 
    string strdh = ((TextBox)e.Item.Cells[3].Controls[0]).Text.ToString(); 
    string strllr = ((TextBox)e.Item.Cells[4].Controls[0]).Text.ToString(); 
    string stryddh = ((TextBox)e.Item.Cells[5].Controls[0]).Text.ToString(); 
    string strlxdz = ((TextBox)e.Item.Cells[6].Controls[0]).Text.ToString(); 
    string strcz = ((TextBox)e.Item.Cells[7].Controls[0]).Text.ToString(); 
     

    //string   updateCmd="UPDATE   Csmx   set  dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+"  where   getcsbh ='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"'";   
    string   updateCmd="UPDATE   Csmx   set  dlb='"+strdlb+"', mc='"+strmc+"',dh="+strdh+",llr="+strllr+",yddh="+stryddh+",lxdz="+strlxdz+",cz="+strcz+"  where csbh ="+strcsbh;
    SqlConnection con=new SqlConnection(conStr);
    SqlCommand   myCommand=new  SqlCommand(updateCmd,con);   
    myCommand.Connection.Open();   
    myCommand.ExecuteNonQuery();   
    DataGrid1.EditItemIndex=-1;   
    GetSqlData();
    }
    麻烦各位高手帮我这位菜鸟看看!谢谢了!
      

  6.   

     where   csbh   = '"+strcsbh+"';