hehe,谢谢翔子,我的做法完全按照QuickStart,怎么就不行呢。我这心啊,拔凉拔凉的。

解决方案 »

  1.   

    原因是每次执行Update之前都先执行了Page_Load
    方法1: 把this.PopulateList();提到if(!Page.IsPostBack)之外,方法2:DataSet ds = new DataSet();  中的ds设为全局的静态变量
       如  private DataSet ds = null;   或用Page的ViewState来保存
      

  2.   

    把绑定操作放到if(!Page.IsPostBack)之外,岂不是第一次load页面都无法绑定,此后的每次操作都会自动再绑定一次。第二种方法好像没说完,愿闻其详。谢谢
      

  3.   

    if(!Page.IsPostBack)
    {
        //bind()
    }编辑事件里:
    DataList1.SelectedIndex=e.CurrentItemIndex;
    bind();
      

  4.   

    to: acewang(**^o^**) 我就是这么做得。可是一点“编辑”,DataList就没了
      

  5.   

    关键是
    (1) 把bind()放到if(!Page.IsPostBack)里面,那么点击“编辑”后,DataList就没了。
    (2) 如果直接再Page_Load里面,bind()那么就更新不了。请先看清出提问。
      

  6.   

    只要将ds设为全局的静态变量,你的其他代码无需改动方法2:DataSet ds = new DataSet();  中的ds设为全局的静态变量
       如  private DataSet ds = null;   或用Page的ViewState来保存后面代码无需在绑定,我们公司的代码都是这么实现的
      

  7.   

    我们从不用直接在DataGrid中直接编辑这种方式private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    }
    else if (e.CommandName =="Delete")
    {
    Conn cn = new Conn();
    cn.open();
    string strSql = "update  T_News set News_ISDelete=1 where News_ID=" + e.Item.Cells[0].Text;
    cn.Sqlcommand(strSql).ExecuteNonQuery();
    ds.Tables[0].Rows.Remove(ds.Tables[0].Rows[e.Item.ItemIndex]);
    refreshForm();
    cn.close();
    Specialist.JavaScript.Alert(Page, "删除成功!");
    }
      

  8.   

    谢谢大家,问题搞定了。因为Page_Load()中目前是这样的
    private void Page_Load(object sender, System.EventArgs e)
    {
       if(!Page.IsPostBack)
       {
          this.PopulateList();
       }
    }
    因为这样DataList在充刷后消失,我最后保持Page_load不变,把PopulateList()函数干脆放到各个Command中去了。
    比如原来的EditCommand是这样的
    {
      DataList1.EditItemIndex = e.Item.ItemIndex;
      DataList1.DataBind();
    }现在改为
    {
      this.PopulateList();
      DataList1.EditItemIndex = e.Item.ItemIndex;
      DataList1.DataBind();
    }就行了。其他Command也是这样,在需要DataBind的时候调用this.PopulateList().谢谢大家了。//bow人人有分!:D