你是不是按编辑以后,更新,有时候成功,有时候没有变化?那是因为自动生成的UPDATE代码不符合要求,请注意第5步方法使用
---------------------------------
步骤:
1.从工具栏中拖入一个gridview到工作区,点击gridview右上角的三角尖图标
2.选择数据源->新建数据源->数据库->下一步
3.指定来自表或视图的列->选择你要操作的表->点击你要更改的字段(切记,一定要包含主键,否则不成功),点击高级->选中"生成insert,update和delete语句"和"使用开放式并发"->点击确定->下一步->完成
4.此时,gridview会出现已经绑定的字段,然后再点击gridview右上角的三角尖->选中"启用编辑"和"启用删除",在gridview的最左边会多出一列
5.点击刚刚生成好的sqldatasource,在属性中查找到updatequery这个属性->修改Sql语句(因为自动生成的sql有可能不满足你的要求)->假设你的主键为id,在生成的sql里面会出现where [id]=@original_id ,只保留这一项,后面所有的条件删除
6.然后找到deletequery这个属性,步骤与5相同
试试看,因为我刚刚才解决了这个困扰我一天的问题
使用gridview里的 OnRowEditing、OnRowCancelingEdit、OnRowUpdating事件
Default.aspx
gridview中
<%# Eval("Name")%>
Default.aspx.cs
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
databind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int rowIndex = e.RowIndex;
TextBox txtname = (TextBox)GridView1.Rows[rowIndex].FindControl("TxtName");
int id = Convert.ToInt32(GridView1.DataKeys[rowIndex].Values["Id"]);//GridView1绑定键值
//根据id更新....
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
databind();//重新绑定数据
}
不是有自动编辑吗?