我是个初学者,以下是我的代码:------翻页------ 
 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之前,不知道应该怎么做呢?    

解决方案 »

  1.   

    向楼主致敬!国庆还工作在第一线!
      

  2.   

    我也有个最笨的方法,可以在数据库中再增加一列,原来的数据不要删除掉,对于新操作的数据你放到新的列里面,另外还要增加一列控制列(比如暂时填写1,如果需要回去改为2,这样如果用户要取消那就把控制列换为2,这样以后如果新增加的列数据存在且控制列不为2 的话那就以第二列为准否则以原来的为准)