0

我使用以下代码将数据从 TextBox 显示到 GridView,而不将数据保存到数据库(两个 TextBoxes 和一个 Button)。当我在文本框中输入名称和城市并单击按钮时,这些值将显示在 Gridview 中。它按预期工作,没有任何错误。但是我想稍微调整一下代码,以便 GridView 应该能够通过保留 Gridview 中的旧数据来从文本框中添加新数据(应该在 Gridview 中显示多行而不是单行)。

它是一个使用 C# 编码 (Visual Studio 2010)的基于 Web 的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();
    }
}
4

1 回答 1

2

您必须在回发之间保留您的数据,这里有很多选择:by 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;
}
于 2013-02-19T07:11:02.590 回答