在下想手工模拟DetailsView的显示数据库中的数据和更新数据库中数据的功能,出现了一些问题,想请教各位大牛问题的背景是这样的:我有一个将DataTable中的各项数据显示到控件上(多数情况下是TextBox)的函数,然后我在PageLoad事件中调用了这个函数,以期在页面打开的时候就自动将数据库中的数据存入到DataTable中,并且显示在页面的控件中。当页面打开之后,用户可以通过修改TextBox里面的值,达到更新数据库中数据的目的。下面问题就出现了,每次修改了一部分值后,点击确认修改按钮,页面刷新,然后控件中显示的值都是未修改之前的值,数据库也未得到修改(估计是在修改数据库之前执行了数据绑定函数,致使数据库中的旧数据覆盖了用户所做的修改,这样,就相当于没有更新数据库)。之后,我使用的if (!IsPostBack)方法来屏蔽掉点击按钮刷新页面的情况下执行我的数据绑定函数,倒是可以完成修改功能了,但是我知道,刷新之后控件中的值不是来自数据库,而是asp.net维护的视图状态。我想要达到的就是,在点击按钮的时候,执行我的数据绑定函数,并且能正确的更新数据库中的数据,不知有没有什么方法可以实现?

解决方案 »

  1.   

    if(!IsPostBack)BindData();
    sqldataaaater更新数据
    SqlConnection cn = new SqlConnection("...");
    SqlDataAdapter da = new SqlDataAdapter("", cn);
    SqlCommandBuilder cmd = new SqlCommandBuilder(da);
    cn.Open();
    ...
    da.Update(yourDataSet);
    cn.Close();
      

  2.   

    string connectionstring ="server = localhost;database = test;uid=sa;pwd=123"
    sqlconnection con = new sqlconnection(connectionstring)
    con.open();
    sqldataAdapter Adapter = new sqldataAdapter();
    sqlcommand cmd = new sqlcommand("select * from tableName",con);
    Adapter.selectCommand = cmd;
    Adapter.Update(ds,tableName);
    con.Close();