2013-03-21 79 views
-2

我已經創造了一些文本框和一個按鈕。當按下按鈕時,我希望在gridview中顯示每條新記錄,但只有在工作時纔會添加記錄,然後當您再次添加記錄時,舊記錄會消失並顯示新記錄。如何添加多個記錄的GridView

var dt = new DataTable(); 

     DataColumn cl = new DataColumn("From"); 
     dt.Columns.Add(cl); 
     cl = new DataColumn("To"); 
     dt.Columns.Add(cl); 

     DataColumn cl1 = new DataColumn("Area"); 
     dt.Columns.Add(cl1); 
     cl1 = new DataColumn("Sector"); 
     dt.Columns.Add(cl1); 

     DataColumn cl2 = new DataColumn("CompanyName"); 
     dt.Columns.Add(cl2); 
     cl2 = new DataColumn("Description"); 
     dt.Columns.Add(cl2); 

     DataRow dr = dt.NewRow(); 
     dr[0] = TextBoxFrom.Text; 
     dr[1] = TextBoxTo.Text; 
     dr[2] = TextBoxArea.Text; 
     dr[3] = TextBoxSector.Text; 
     dr[4] = TextBoxCompanyName.Text; 
     dr[5] = TextBoxDescription.Text; 
     dt.Rows.Add(dr); 


     GridViewAllAssigments.DataSource = dt; 
     GridViewAllAssigments.DataBind(); 

回答

1

您的代碼不起作用,因爲您每次都在創建一個DataTable的新實例,然後添加新行。

爲此,您需要創建DataTable 一次,將該行添加到現有DataTable並重新綁定它。

事情是這樣的:

所有的
DataTable dt = Session["DT"] as DataTable; 
if(dt==null) 
{ 
    dt = new DataTable(); 
    Session["DT"]=dt;//store it for next round trip 
} 

//rest of your code code to add a new row... 

GridViewAllAssigments.DataSource = dt; 
GridViewAllAssigments.DataBind(); 
2

首先,我建議你不要使用DataTable到GridView綁定,而不是創建一個類來保存數據。

public class MyData 
{ 
    public string From { get; set; } 
    public string To { get; set; } 
    public string Area { get; set; } 
    public string Sector { get; set; } 
    public string CompanyName { get; set; } 
    public string Description { get; set; } 
} 

你必須保持在一個會話變量中的數據,這樣你就不會失去你的數據回傳的每個:

public List<MyData> MyData 
{ 
    get 
    { 
     if (Session["MyData"] == null) 
      return new List<MyData>(); 

     return (List<MyData>)Session["MyData"]; 
    } 
    set 
    { 
     Session["MyData"] = value; 
    } 
} 

當檢索從控制值,使用以下命令:

var myData = this.MyData; 
myData.Add(new MyData() { 
     Area = TextBoxArea.Text, 
     CompanyName = TextBoxCompanyName.Text, 
     Description = TextBoxDescription.Text, 
     From = TextBoxFrom.Text, 
     Sector = TextBoxSector.Text, 
     To = TextBoxTo.Text 
    }); 

this.MyData = myData;   

GridViewAllAssigments.DataSource = this.MyData; 
GridViewAllAssigments.DataBind(); 
+0

+1使用類的方法 – 2013-03-21 14:43:02

相關問題