2010-03-06 54 views
1

我有一個「清除」按鈕,設置gridview的數據源爲null,結合其恢復爲初始選擇。然而,當我添加新條目到它,老行似乎再次出現(除了新行)......不知道我做錯了....ASP.NET GridView控件設置爲空,但在做一個補充

gv.DataSource = null; 
gv.DataBind(); 

不該」上面清楚gridview的狀態? TIA

protected void btnAddFactor_Click(object sender, EventArgs e) 
    { 

     if (txtfactor.Text != "") 
     { 
      if (ViewState["factor"] == null) 
      { 
       DataTable dtbl = new DataTable(); 
       dtbl.Columns.Add("Factor"); 
       dtbl.Columns.Add("Weight"); 
       DataRow dr = dtbl.NewRow(); 
       dr[0] = txtfactor.Text.Trim(); 
       dr[1] = Convert.ToInt32(ddlWeight.SelectedValue); 
       dtbl.Rows.Add(dr); 
       ViewState["factor"] = dtbl; 

      } 
      else 
      { 

       DataTable dtbl = (DataTable)(ViewState["factor"]); 
       DataRow dr = dtbl.NewRow(); 
       dr[0] = txtfactor.Text.Trim(); 
       dr[1] = Convert.ToInt32(ddlWeight.SelectedValue); 
       dtbl.Rows.Add(dr); 
       ViewState["factor"] = dtbl; 

      } 
      gvFactor.DataSource = (DataTable)(ViewState["factor"]); 
      gvFactor.DataBind(); 
      //gvFactor.Rows. 

     } 
    } 

    protected void btnClearFactor_Click(object sender, EventArgs e) 
    { 
     gvFactor.DataSource = null; 
     gvFactor.DataBind(); 
    } 

回答

2

確實正在執行的代碼?

如果不運行ViewState獲取應用和行(或者其他任何你有)不會消失。

請,包括包含代碼和相關標記的方法。

更新

好吧,我在看你添加的代碼,你保存的東西在ViewState中,當您清除GridView和重新綁定您還需要清除的ViewState(ViewState["factor"] == null),否則如果您清除的ViewState設置DataSource爲空,也沒有必要

protected void btnClearFactor_Click(object sender, EventArgs e) 
{ 
    ViewState["factor"] == null 

    // this line you shouldn't need 
    gvFactor.DataSource = null; 

    gvFactor.DataBind(); 
} 

:當你添加其他行的舊人會拿起以及它仍然是在ViewState。

+0

是的,我可以看到gv被清除。但是,當我添加一個新的行時,舊的會重新出現。 – Mikos 2010-03-06 23:45:22

+0

很棒!非常感謝! – Mikos 2010-03-07 00:03:41

+0

如果你不介意,也可以投票,如果它的工作;) – JohnIdol 2010-03-07 00:16:45

相關問題