当前位置:编程学习 > C#/ASP.NET >>

GridView编辑是出错无效

1、   GridView1.DataKeys[e.RowIndex].Values[0].ToString();
索引超出范围。必须为非负值并小于集合大小。
参数名: index 
2、在编辑数据时,取出编辑控件的值却是原来的。不是新编辑的。

  protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {

        
        string stuid=GridView1.DataKeys[e.RowIndex].Values[0].ToString();
       
        string studepart = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("DropDownListyx")).SelectedItem.Text.ToString();
       ("DropDownListyx")).SelectedValue);
               string stuname = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBoxxm")).Text;
        int stugrade =int.Parse(((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBoxnj")).Text);
        int stuclass = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBoxbj")).Text);
        string conn = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
        string mysql = "update student set stuname='" + stuname + "',departname='" + studepart + "',stugrade='" + stugrade + "',stuclass='" + stuclass + "',departname='" + studepart + "' where stuid='" + stuid + "'";
                try
        {
            SqlConnection myconn = new SqlConnection(conn);
            if (myconn.State.ToString() == "Closed")
                myconn.Open();
            SqlCommand mycomd = new SqlCommand(mysql, myconn);
            mycomd.ExecuteNonQuery();
            mycomd.Dispose();
            if(myconn.State.ToString() == "Open")
                myconn.Close();
            GridView1.EditIndex = -1;
            GridView1.DataBind();
        }
        catch (Exception ex)
        {
            Response.Write("数据库错误:" + ex.Message);
            Response.End();
        } --------------------编程问答-------------------- GridView1.DataKeys[e.RowIndex].Values[0].ToString(); 好像是e.UpdateRowindex之类吧(在网吧的电脑,没有vs2005)~~~ --------------------编程问答-------------------- 你里面有两个index,先要搞清楚是哪个出错了。
如果你只有一个主键,则用string   stuid=GridView1.DataKeys[e.RowIndex].Value.ToString(); 
如果多个主键,Values后面最好用字符串索引,而不是整数索引。

GridView更新写这么多代码干什么,一行代码都不必写。见blogs.csdn.net/ivy_zheng里面数据库访问那篇 --------------------编程问答-------------------- 如果楼主只设置了一个逐渐,那么这段代码改写成这样试一下。 
string   stuid=GridView1.DataKeys[e.RowIndex].Values.ToString(); 
关于找到下拉框控件,你的代码可以不用这么写,想这样就好
string   studepart   =   ((DropDownList)GridView1.Rows[e.RowIndex].cells[index].controls[index]).SelectItem.text.toString();
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,