求解!gridview GridView 删除或更新某一行,只去除或更新GridView中的记录,不更新数据库!

hou3802399 2012-07-12 09:10:29
GridView 删除或更新某一行,只去除或更新GridView中的记录,不更新数据库! 按保存按钮才能更新或删除!用datatable实现,不用JSP!
...全文
268 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
H_Gragon 2012-07-12
  • 打赏
  • 举报
回复
楼主为什么要这样做,怕误删除吗?你可以在删除按钮上加提示啊……
  • 打赏
  • 举报
回复


/// <summary>
/// 视图
/// </summary>
private DataTable GridViewSource
{
get
{
if (ViewState["List"] == null)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Stock", typeof(string)));
dt.Columns.Add(new DataColumn("GoodsNO", typeof(string)));
dt.Columns.Add(new DataColumn("DeviceNO", typeof(string)));
dt.Columns.Add(new DataColumn("Brand", typeof(string)));
dt.Columns.Add(new DataColumn("Class", typeof(string)));

ViewState["List"] = dt;
}

return (DataTable)ViewState["List"];
}
set
{
ViewState["List"] = value;
}
}


你可以定义一个这样的数据表,然后通过“绑定表”,读取表数据来更新

如果你删除了一行(记录删除的ID),或者添加了一行,保存时,循环读取数据表,如果id为空的则是你需要添加的,id不为空则是你需要更新的
落阳 2012-07-12
  • 打赏
  • 举报
回复
4楼的朋友说得没错。
IT求解释 2012-07-12
  • 打赏
  • 举报
回复
将要绑定的DataSet存储在Session里面....对保存的DataSet进行删除和更新后再绑定到gridview即可,不会影响数据库
例如:
查出DataSet 保存到Session中
DataSet ds=......;
Session["Temp"]=ds;
//删除方法中
DataSet ds=Session["Temp"] as DataSet;
ds.Tables[0].Rows[0].Delete();
gridview.DataSource=ds.Tables[0].DefaultView;
gridview.DataBind();

//修改方法类似删除,只需取出session中的DataSet,更改其中某行的值再绑定到gridview即可
以上方法仅供参考。。。。。
Jack123 2012-07-12
  • 打赏
  • 举报
回复
http://tech.techweb.com.cn/thread-383167-2-1.html
Jack123 2012-07-12
  • 打赏
  • 举报
回复
每次更新的值保存在DataTable里,最后把DataTable统一保存到数据库表里。
呆子罗 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

将要绑定的DataSet存储在Session里面....对保存的DataSet进行删除和更新后再绑定到gridview即可,不会影响数据库
例如:
查出DataSet 保存到Session中
DataSet ds=......;
Session["Temp"]=ds;
//删除方法中
DataSet ds=Session["Temp"] as DataSet;
ds.Tables[……
[/Quote]
性能是个问题。滥用session
暗尘掩月 2012-07-12
  • 打赏
  • 举报
回复
[code=Html]
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("str1") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("str2") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("str3") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="增加行" />
<asp:Button ID="Button2" runat="server" Text="删除行" onclick="Button2_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

[/code]

protected void Button1_Click(object sender, EventArgs e)
{
// 行号
int row = ((GridViewRow)((Button)sender).NamingContainer).RowIndex;
DataTable dt = new DataTable();
dt.Columns.Add("str1");
dt.Columns.Add("str2");
dt.Columns.Add("str3");
foreach (GridViewRow item in this.GridView1.Rows)
{
DataRow dr = dt.NewRow();
dr["str1"] = ((TextBox)item.Cells[0].FindControl("TextBox1")).Text;
dr["str2"] = ((TextBox)item.Cells[1].FindControl("TextBox2")).Text;
dr["str3"] = ((TextBox)item.Cells[2].FindControl("TextBox3")).Text;
dt.Rows.Add(dr);
}
dt.Rows.InsertAt(dt.NewRow(), row+1);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}

protected void Button2_Click(object sender, EventArgs e)
{
// 行号
int row = ((GridViewRow)((Button)sender).NamingContainer).RowIndex;
DataTable dt = new DataTable();
dt.Columns.Add("str1");
dt.Columns.Add("str2");
dt.Columns.Add("str3");
foreach (GridViewRow item in this.GridView1.Rows)
{
DataRow dr = dt.NewRow();
dr["str1"] = ((TextBox)item.Cells[0].FindControl("TextBox1")).Text;
dr["str2"] = ((TextBox)item.Cells[1].FindControl("TextBox2")).Text;
dr["str3"] = ((TextBox)item.Cells[2].FindControl("TextBox3")).Text;
dt.Rows.Add(dr);
}
dt.Rows.RemoveAt(row);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}

紫魂一号 2012-07-12
  • 打赏
  • 举报
回复
ds.Tables[0].NewRow();增加
ds.Tables[0].Rows[0].Delete();删除
这些只是表面的新增或删除,然后你要保存到数据库的话还需要利用SqlDataAdapter 这个对象对数据集进行批量的更新..
hou3802399 2012-07-12
  • 打赏
  • 举报
回复
不是怕误删,是做个撤销功能!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧