该如何回滚?

bengdeng 2007-10-04 09:08:40
我是个初学者,以下是我的代码:

------翻页------
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
delete();
add();
lb1.Text = tibaoje();
float a1 = float.Parse(lb1.Text.Trim());
float b1 = float.Parse(lb2.Text.Trim());
if (a1 > b1)
{
Page.RegisterStartupScript("", "<script language='javascript'>window.alert('请重新填写!');</script>");
}
bind1();
}
}

private string tibaoje() //计算提报金额
{

string sqlstr5 = "select sum(amount*price) from material,tibaoxj where tibaoxj.wl_num=material.wl_num and tibaoxj.tb_num=@tb_num";

mycmd = new SqlCommand(sqlstr5, con);
con.Open();
mycmd.Parameters.Add("@tb_num", SqlDbType.Char).Value = (string)Session["tb_num"];
string tbcash = mycmd.ExecuteScalar().ToString();
con.Close();
return tbcash;

}

-------增加记录操作-------
private void add()
{
int n = GridView1.Rows.Count;
for (int i = 0; i < n; i++)
{
if (((TextBox)(GridView1.Rows[i].Cells[4].FindControl("tb1"))).Text != "")
{
key = GridView1.DataKeys[i].Value.ToString();
mycmd = new SqlCommand("insert into tibaoxj values(@tb_num,@wl_num,@amount)", con);
mycmd.Parameters.Add("@tb_num", SqlDbType.Char).Value = (string)Session["tb_num"];
mycmd.Parameters.Add("@wl_num", SqlDbType.Char).Value = key;
mycmd.Parameters.Add("@amount", SqlDbType.Int).Value = ((TextBox)(GridView1.Rows[i].Cells[4].FindControl("tb1"))).Text;
con.Open();
mycmd.ExecuteNonQuery();
con.Close();
}
}
}

--------删除记录操作-------
private void delete()
{
int n1 = GridView1.Rows.Count;

for (int i = 0; i < n1; i++)
{

key = GridView1.DataKeys[i].Value.ToString();
string sqlstr2 = "select * from tibaoxj where tb_num=@tb_num and wl_num=@wl_num";
myda = new SqlDataAdapter(sqlstr2, con);
DataSet myds1 = new DataSet();
myda.SelectCommand.Parameters.Add("@tb_num", SqlDbType.Char).Value = (string)Session["tb_num"];
myda.SelectCommand.Parameters.Add("@wl_num", SqlDbType.Char).Value = key;
myda.Fill(myds1, "tibao1");
int count1 = myds1.Tables["tibao1"].Rows.Count;
if (count1 != 0)
{

mycmd = new SqlCommand("delete tibaoxj where tb_num=@tb_num and wl_num=@wl_num", con);
mycmd.Parameters.Add("@tb_num", SqlDbType.Char).Value = (string)Session["tb_num"];
mycmd.Parameters.Add("@wl_num", SqlDbType.Char).Value = key;
con.Open();
mycmd.ExecuteNonQuery();
con.Close();

}
}
Gridview最后一列是模版列,输入数量的,翻页时我用最笨的办法:先delete再add,都是用的循环的办法,开始我是这么做的,后来发现不行,其实应该当判断到a1>b1时,除了提示外,应该回到delete之前,不知道应该怎么做呢?
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaolin 2007-10-04
  • 打赏
  • 举报
回复
我也有个最笨的方法,可以在数据库中再增加一列,原来的数据不要删除掉,对于新操作的数据你放到新的列里面,另外还要增加一列控制列(比如暂时填写1,如果需要回去改为2,这样如果用户要取消那就把控制列换为2,这样以后如果新增加的列数据存在且控制列不为2 的话那就以第二列为准否则以原来的为准)
gaolin 2007-10-04
  • 打赏
  • 举报
回复
向楼主致敬!国庆还工作在第一线!

62,046

社区成员

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

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

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

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