gridview中更新前要  设置RowEditing  设置当前编辑项  然后更新数据库表内容的时候是在RowUpdating
不知道我这样理解有没有错呀??、gridview中是自定义模板    
有几个textbox和dropdowlist 我在更新之前 测试过  数据 能取到   不知道是什么属性没设置还是什么原因就 是更新不了
前台页面
<asp:GridView ID="gdv_student" runat="server" AutoGenerateColumns="False" 
            Width="700px" BackColor="White" BorderColor="#CC9966" BorderStyle="None" 
            BorderWidth="1px" CellPadding="4" AllowPaging="True" PageSize="20" 
        DataKeyNames="sno" onpageindexchanging="gdv_student_PageIndexChanging" 
        onselectedindexchanged="gdv_student_SelectedIndexChanged" 
        onrowdeleting="gdv_student_RowDeleting" 
        onrowcancelingedit="gdv_student_RowCancelingEdit" 
        onrowediting="gdv_student_RowEditing" 
        onrowupdating="gdv_student_RowUpdating">
            <RowStyle BackColor="White" ForeColor="#330099" />
            <Columns>
            
            <asp:TemplateField HeaderText="编号">
            <ItemTemplate><%# Eval("sno")%></ItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="学号">
            <ItemTemplate><%# Eval("snumber")%></ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txt_number" runat="server" Text='<%# Eval("snumber")%>' ></asp:TextBox>
             </EditItemTemplate> 
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="姓名">
            <ItemTemplate><%#  Eval("sname")%></ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txt_sname" runat="server" Text='<%# Eval("sname")%>'></asp:TextBox>
            </EditItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="性别">
            <ItemTemplate>
            <%# Eval("ssex")%>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="Drop_sex" runat="server" >
                <asp:ListItem Text="男" Value="0"></asp:ListItem>
                <asp:ListItem Text="女" Value="1"></asp:ListItem>
                </asp:DropDownList>
            </EditItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="生日" >
            <ItemTemplate><%# Eval("sbirth")%></ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="Drop_y" runat="server">
                </asp:DropDownList>
                 <asp:DropDownList ID="Drop_m" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Drop_m_SelectedIndexChanged" >
                </asp:DropDownList>
                <asp:DropDownList ID="Drop_d" runat="server" >
                </asp:DropDownList>
            </EditItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="院系">
            <ItemTemplate><%# Eval("dname")%></ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="Drop_depart" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Drop_depart_SelectedIndexChanged" >
                
                </asp:DropDownList>
            </EditItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="班级">
            <ItemTemplate><%# Eval("bname")%></ItemTemplate>
            <EditItemTemplate>
            <asp:DropDownList ID="Drop_class" runat="server">
                </asp:DropDownList>
            </EditItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="身份证" >
            <ItemTemplate><%# Eval("spcode")%></ItemTemplate><ItemStyle  />
            <EditItemTemplate>
                <asp:TextBox ID="txt_spcode" runat="server" Text='<%# Eval("spcode")%>'></asp:TextBox></EditItemTemplate>
            </asp:TemplateField>
               
             
            
                <asp:TemplateField HeaderText="编辑|删除">
                
                <ItemTemplate>
                    <asp:LinkButton ID="LbEdit" runat="server" CommandName="Edit" ForeColor="Red">编辑</asp:LinkButton>
                    <asp:LinkButton ID="LbDele" runat="server" CommandName="Delete"  ForeColor="Red" OnClientClick="return confirm('确认要删除此行信息吗?')">删除</asp:LinkButton>
                </ItemTemplate>
                 
                <EditItemTemplate>
                    <asp:LinkButton ID="LbUpde" runat="server" CommandName="Upde" ForeColor="Red">更新</asp:LinkButton>
                    <asp:LinkButton ID="LbCancel" runat="server" CommandName="Cancel" ForeColor="Red">取消</asp:LinkButton>
                </EditItemTemplate>
                
                </asp:TemplateField>
               
             
            
            </Columns>
            <PagerTemplate>
            
            <asp:LinkButton ID="lbFirst" runat="server" CommandArgument="First" CausesValidation="false" CommandName="Page" ForeColor="Red">首页</asp:LinkButton>
            <asp:LinkButton ID="lbPrev" runat="server" CommandArgument="Prev" CausesValidation="false" CommandName="Page" ForeColor="Red">上一页</asp:LinkButton>
            <asp:LinkButton ID="lbNext" runat="server" CommandArgument="Next" CausesValidation="false" CommandName="Page" ForeColor="Red">下一页</asp:LinkButton>
            <asp:LinkButton ID="LbLast" runat="server" CommandArgument="Last" CausesValidation="false" CommandName="Page" ForeColor="Red">末页</asp:LinkButton>
            第
            <asp:Label ID="Label1" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>"></asp:Label>
            页
            共
            <asp:Label ID="Label2" runat="server" Text=" <%# ((GridView)Container.Parent.Parent).PageCount %>"></asp:Label>
            页
            跳到
            
            <asp:TextBox ID="txt_page" runat="server"></asp:TextBox>
            
            <asp:LinkButton ID="LbGO" runat="server"  CommandArgument="-1" CausesValidation="false" CommandName="Page" Text="Go"  ForeColor="Red" OnClick="gotopage"></asp:LinkButton>
            </PagerTemplate>
            
            
            <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
            <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
        </asp:GridView>

解决方案 »

  1.   

    编辑代码:   protected void gdv_student_RowEditing(object sender, GridViewEditEventArgs e)
        {        
            gdv_student.Columns[8].HeaderText = "更新|取消";
            gdv_student.EditIndex = e.NewEditIndex;
            grd_find_s(pro_grd, gdv_student);
            bind_gdv_drop(gdv_student.EditIndex, "Drop_depart");
            editindex = e.NewEditIndex;   
            return_y("Drop_y");
            return_m("Drop_m");       
            //初始化末年的末月的所有天        DropDownList drop1 = (DropDownList)gdv_student.Rows[editindex].FindControl("Drop_y");//年
            DropDownList drop2 = (DropDownList)gdv_student.Rows[editindex].FindControl("Drop_m");//月 
            int i = DataTypeConvert.ConvertToInt(drop1.SelectedItem.Text);
            int j = DataTypeConvert.ConvertToInt(drop2.SelectedItem.Text);
            return_d(i, j, "Drop_d"); 
            //初始化院系连动
            DropDownList drop3 = (DropDownList)gdv_student.Rows[editindex].FindControl("Drop_depart");
            DropDownList drop4= (DropDownList)gdv_student.Rows[editindex].FindControl("Drop_class");
            string dname = drop3.SelectedItem.Text;
            SqlParameter par = OperateDatabase.CreateInParam("name", SqlDbType.VarChar, 20, dname);
            DataSet ds = null;
            OperateDatabase.RunProc(pro_showclassname, ref ds, par);
            Web2ASPNET2.CommonOperation.DataBinder.BindListData(drop4, ds, "bname", "bno");        string number = ((TextBox)(gdv_student.Rows[editindex].FindControl("txt_number"))).Text.ToString();
            string name = ((TextBox)(gdv_student.Rows[editindex].FindControl("txt_sname"))).Text.ToString();
            int sex = DataTypeConvert.ConvertToInt(((DropDownList)(gdv_student.Rows[editindex].FindControl("Drop_sex"))).SelectedItem.Value);
            int sno = (int)gdv_student.DataKeys[editindex].Value;
            int classname = DataTypeConvert.ConvertToInt(((DropDownList)(gdv_student.Rows[editindex].FindControl("Drop_class"))).SelectedItem.Value);
            string birth = ((DropDownList)(gdv_student.Rows[editindex].FindControl("Drop_y"))).SelectedItem.Value +"-"+  
                ((DropDownList)(gdv_student.Rows[editindex].FindControl("Drop_m"))).SelectedItem.Value +"-"+
                ((DropDownList)(gdv_student.Rows[editindex].FindControl("Drop_d"))).SelectedItem.Value;
            string spcode = ((TextBox)(gdv_student.Rows[editindex].FindControl("txt_spcode"))).Text.ToString();        Response.Write(number + "*" + name + "*" + sex + "*" + sno + "*" + classname + "*" + DataTypeConvert.ConvertToDateTime(birth).ToShortDateString() + "*" + spcode);                
        }
      

  2.   

    我 用response代码测试过  值 能取到
      

  3.   

    string number = ((TextBox)(gdv_student.Rows[e.RowIndex].FindControl("txt_number"))).Text.ToString();
            string name = ((TextBox)(gdv_student.Rows[e.RowIndex].FindControl("txt_sname"))).Text.ToString();
            int sex = DataTypeConvert.ConvertToInt(((DropDownList)(gdv_student.Rows[e.RowIndex].FindControl("Drop_sex"))).SelectedItem.Value);
            int sno = (int)gdv_student.DataKeys[e.RowIndex].Value;
            int classname = DataTypeConvert.ConvertToInt(((DropDownList)(gdv_student.Rows[e.RowIndex].FindControl("Drop_class"))).SelectedItem.Value);
            string birth = ((DropDownList)(gdv_student.Rows[e.RowIndex].FindControl("Drop_y"))).SelectedItem.Value + "-" +
                ((DropDownList)(gdv_student.Rows[e.RowIndex].FindControl("Drop_m"))).SelectedItem.Value + "-" +
                ((DropDownList)(gdv_student.Rows[e.RowIndex].FindControl("Drop_d"))).SelectedItem.Value;
                    string spcode = ((TextBox)(gdv_student.Rows[e.RowIndex].FindControl("txt_spcode"))).Text.ToString();        Response.Write(number+"*"+name+"*"+sex+"*"+sno+"*"+classname+"*"+birth+"*"+spcode);
            try
            {
                  SqlParameter[] pars ={
                                      OperateDatabase.CreateInParam("@snumber",SqlDbType.VarChar,40,number),
                                        OperateDatabase.CreateInParam("@sname",SqlDbType.VarChar,30,name),
                                         OperateDatabase.CreateInParam("@ssex",SqlDbType.TinyInt,40,sex),
                                          OperateDatabase.CreateInParam("sno",SqlDbType.Int,4,sno),
                                           OperateDatabase.CreateInParam("@bno",SqlDbType.Int,40,classname),
                                            OperateDatabase.CreateInParam("@sbirth",SqlDbType.SmallDateTime,40,DataTypeConvert.ConvertToDateTime(birth).ToShortDateString()),
                                             OperateDatabase.CreateInParam("@spcode",SqlDbType.VarChar,40,spcode),
                                             
                                  };            OperateDatabase.RunProc(upde_student, pars);
                Dialog.OpenDialog(Response,"更新成功");
                gdv_student.Columns[8].HeaderText = "编辑|删除";
                gdv_student.EditIndex = -1;
                
                grd_find_s(pro_grd, gdv_student);
            }
            catch(Exception ex)
            {
                Dialog.OpenDialog(Response,ex.Message);
     
            }
      

  4.   

    怎么代码全在editing事件里,updating呢
      

  5.   

    OperateDatabase.RunProc(upde_student, pars); 
    这个调用中间代码 执行 存储过程
      

  6.   

    好乱啊,基本上不用gridview带的编辑
    例子楼主参考下
        /// <summary>
        /// 在单击 GridView 控件内某一行的 Update 按钮(其 CommandName 属性设置为"Update"的按钮)时发生,但在 GridView 控件更新记录之前。此事件通常用于取消更新操作。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string ID = GridView1.DataKeys[e.RowIndex].Value.ToString();
            string Emp_ID = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim();
            string Emp_RealName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
            string Emp_Sex = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
            string Emp_Address = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
            string sqlStr = "update Employee set EmpID='" + Emp_ID + "',EmpRealName='" + Emp_RealName + "',EmpSex='" + Emp_Sex + "',EmpAddress='" + Emp_Address + "' where ID=" + ID + "";
            Common.ExecuteSql(sqlStr);
            GridView1.EditIndex = -1;
            bind();
        }
        /// <summary>
        /// 在单击 GridView 控件内某一行的 Edit 按钮(其 CommandName 属性设置为“Edit”的按钮)时发生,但在 GridView 控件进入编辑模式之前。此事件通常用于取消编辑操作。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            bind();
        }
     OnRowUpdating="GridView1_RowUpdating" OnRowEditing="GridView1_RowEditing"
      

  7.   

    数据库值更新了没,update完重新绑定了没