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>
不知道我这样理解有没有错呀??、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>
{
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);
}
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);
}
这个调用中间代码 执行 存储过程
例子楼主参考下
/// <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"