2013-02-19 86 views
0

我已經使用下面的代碼將數據從TextBox顯示到GridView而不將數據保存到數據庫(兩個文本框和一個按鈕)。當我在文本框中輸入名稱和城市,並點擊按鈕時,這些值將顯示在Gridview中。它按預期工作,沒有任何錯誤。但我想調整一下代碼,這樣GridView應該能夠通過保留原來的數據保留GridView中的新數據(多行應顯示在Gridview而不是單行) 。如何從TextBox提取數據到GridView(在GridView中顯示多行)?

這是一個基於Web的使用C#編碼(Visual Studio 2010)的ASP.NET應用程序。

您可以對下面給出的代碼進行必要的更改以實現上述功能嗎?

public partial class _Default : System.Web.UI.Page 
{ 
    DataSet ds = new DataSet(); 
    DataTable dt = new DataTable(); 

protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

protected void btnTextDisplay_Click(object sender, EventArgs e) 
    { 
      DataColumn dc1 = new DataColumn("Name"); 
      DataColumn dc2 = new DataColumn("City"); 
      dt.Columns.Add(dc1); 
      dt.Columns.Add(dc2); 

      DataRow dr = dt.NewRow(); 
      dr[0] = txtName.Text; 
      dr[1] = txtCity.Text; 
      dt.Rows.Add(dr); 
      gvDisplay.DataSource = dt; 
      gvDisplay.DataBind(); 
    } 
} 

回答

2

你必須回發之間仍然存在你的數據,你有很多選擇在這裏:通過SessionViewStateCache和其他一些。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostback) 
    { 
     dt = Session["data_table"] as DataTable; 
    } 
} 

protected void btnTextDisplay_Click(object sender, EventArgs e) 
{ 
    if (dt == null) 
    { 
      dt = new DataTable(); 
      DataColumn dc1 = new DataColumn("Name"); 
      DataColumn dc2 = new DataColumn("City"); 
      dt.Columns.Add(dc1); 
      dt.Columns.Add(dc2); 
    } 

    DataRow dr = dt.NewRow(); 
    dr[0] = txtName.Text; 
    dr[1] = txtCity.Text; 
    dt.Rows.Add(dr); 
    gvDisplay.DataSource = dt; 
    gvDisplay.DataBind(); 

    Session["data_table"] = dt; 
} 
+0

如何使用ViewState和Cache進行這些更改?我想知道差異。 – Fahhad 2013-02-19 07:24:16

+0

'ViewState'存儲在客戶端的html(隱藏字段)中,'Cache'和'Session'存儲在內存中,但它們有不同的選項,更多信息[here](http://stackoverflow.com/問題/ 9320568 /視圖狀態-VS-餅乾-VS兌現-VS-會話)。更改代碼很簡單,只需將'Session [「data_table」]'改爲'ViewState [「data_table」]或Cache [「data_table」]':) – gzaxx 2013-02-19 07:33:24