我用数据集XSD文件做为DATAGRID的数据源在实现编辑时可以实时的绑定刷新
可是在实现删除时
虽然点击删除了,可是点击完后,它还显示在上面,
而实际上这条记录已经删除了
当再次编辑或删除别的记录时就会看到它实际上已经被删除了:(这是怎么回事尼?

解决方案 »

  1.   

    删除后重新绑定数据到DataGrid。
      

  2.   

    我来废话一下if(!this.IsPostBack)
    {
     //绑定数据
     DataBind();
    }public void DataBind()
    {
     //绑定数据操作
    }private void DelButton_Click(object sender, System.EventArgs e)
    {
     //删除操作
     .....
     //再次绑定数据
     DataBind();
    }
      

  3.   

    我用的是xsd文件做为数据源的,所以绑定的时候只是用了
    sqlDataAdapter1.Fill(zs1);
    DataGrid1.EditItemIndex=-1;
    DataGrid1.DataBind();
    不知道这个方法对不?
      

  4.   

    是否放入了if(!IsPostBack)
    {
    }
    里面?
      

  5.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    //ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkWalkthroughUsingDataGridWebControlToReadWriteData.htm
    if (Session["dvtv"] != null)
    {
    dsTree1 = (dsTree)Session["dstv"];
    dvTree = (DataView)Session["dvtv"];
    }
    else
    {
    daTree.Fill(dsTree1,"tree");
    Session["dstv"] = dsTree1;
    Session["dvtv"] = dvTree;
    }

    if ( !IsPostBack)
    tvDataGrid.DataBind();
    }
    private void tvDataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    tvDataGrid.EditItemIndex = e.Item.ItemIndex;
    tvDataGrid.DataBind();
    } private void tvDataGrid_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    tvDataGrid.EditItemIndex = -1;
    tvDataGrid.DataBind();
    } private void tvDataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string name,parentID,conText,URL;
    //string id;
    int degree;
    dsTree.treeRow r;
    TextBox tb;
    string key = tvDataGrid.DataKeys[e.Item.ItemIndex].ToString();
    //tb = (TextBox)e.Item.Cells[2].Controls[0];
    //id = tb.Text;
    tb = (TextBox)e.Item.Cells[3].Controls[0];
    name = tb.Text;
    tb = (TextBox)e.Item.Cells[4].Controls[0];
    parentID = tb.Text;
    tb = (TextBox)e.Item.Cells[5].Controls[0];
    degree = int.Parse(tb.Text);
    tb = (TextBox)e.Item.Cells[6].Controls[0];
    conText = tb.Text;
    tb = (TextBox)e.Item.Cells[7].Controls[0];
    URL = tb.Text;
    r = dsTree1.tree.FindByid(key);
    //r.id = id;
    r.name = name;
    r.parentid = parentID;
    r.degree = degree;
    r.context = conText;
    r.url = URL;
    daTree.Update(dsTree1);
    //重新保存dstv
    Session["dstv"] = dsTree1;
    Session["dvtv"] = dvTree;
    tvDataGrid.EditItemIndex = -1;
    tvDataGrid.DataBind();
    } private void tvDataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    //删除代码
    string key = tvDataGrid.DataKeys[e.Item.ItemIndex].ToString();
    string sqlDeleteTree = "DELETE FROM tree WHERE id = '" + key + "'";
    SqlCommand sqlComm = new SqlCommand(sqlDeleteTree,sqlConn);
    sqlConn.Open();
    sqlComm.ExecuteNonQuery();
    sqlConn.Close();
    Session.RemoveAll();
    Response.Redirect("tvGrid.aspx",true);
    } private void tvDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    {
    //可以在表达式后面加ASC或DESC来加以正倒序排序
    if (dvTree.Sort == "id ASC")
    {
    dvTree.Sort = e.SortExpression + " DESC";
    }
    else
    {
    if(dvTree.Sort == "id DESC")
    dvTree.Sort = e.SortExpression;
    else
    dvTree.Sort = e.SortExpression + " ASC";
    }
    tvDataGrid.DataBind();
    }
      

  6.   

    执行删除代码后,再加一条语句:
    DataGrid1.DataBind();
      

  7.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
                               //zs是用IDE生成的数据集
    sqlDataAdapter1.Fill(zs1);
    if(!IsPostBack)
    {
    DataGrid1.DataBind();
    }
    }
    private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string delcmd="delete from pay where id="+DataGrid1.DataKeys[(int)e.Item.ItemIndex].ToString();
    sqlCommand1.CommandText=delcmd;
    sqlCommand1.Connection.Open();
    sqlCommand1.ExecuteNonQuery();
    sqlCommand1.Connection.Close();
    sqlDataAdapter1.Fill(zs1);
    DataGrid1.EditItemIndex=-1;
    DataGrid1.DataBind();
    }
      

  8.   

    是不是缓存了呢?在<head>中加一句:<meta http-equiv="progma" content="no-cache">
      

  9.   

    楼上的,这个语句也顶事?我晕了。
     我里面加了databind()了啊。
     比如说删除吧。你第一次点,虽然实际上删除了,可是在页面上还是显示着。可是再删除另一条的时候,它就不见了。
      

  10.   

    你可以把绑定DataGrid独立写成一个方法
    Private void BindGrid()
    {
      DataTable dt=xx.xx() //根据方法返回DataTable(或DataReader or DataSet)
      DataGridName.DataSource=dt;
      DataGridName.DataBind();
    }再写你删除操作
    Private void InsertMethod()
    {
     .....
     BindGrid();  //重新调用此方法即可,这点就是你的问题所在
    }
      

  11.   

    我和你的问题一样  一模一样的  我也重新绑定过了 就是没用我的问题:http://community.csdn.net/Expert/topic/3428/3428835.xml?temp=.8606531
      

  12.   

    if(!this.IsPostBack)
    {
     //绑定数据
     DataBind();
    }
      

  13.   

    你可以把绑定DataGrid独立写成一个方法
    Private void BindGrid()
    {
      DataTable dt=xx.xx() //根据方法返回DataTable(或DataReader or DataSet)
      DataGridName.DataSource=dt;
      DataGridName.DataBind();
    }再写你删除操作
    Private void InsertMethod()
    {
     .....
     BindGrid();  //重新调用此方法即可,这点就是你的问题所在
    }
    偶也喜欢这样用的