GridView正在添加新行,但不显示值

时间:2013-04-17 12:04:55

标签: c# asp.net session gridview datatable

背景

所以我几天前就开始在ASP.Net工作了。在我的网页上,我正在创建一个联系人表,供用户填充然后提交到数据库。现在我用户做的是将信息输入到各种文本框中,然后单击"添加联系人"按钮然后将内容添加到存储在DataTable对象中的Session。我DataSource的{​​{1}}是GridView

当前状态

更新了点击事件代码

每当我点击"添加联系人"按钮新行添加到我的DataTable,但GridView的单元格中没有显示任何内容。

代码:

GridView

问题

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { dt.Columns.Add("First", typeof(String)); dt.Columns.Add("Last", typeof(String)); dt.Columns.Add("Email", typeof(String)); dt.Columns.Add("Phone", typeof(String)); Session["TempTable"] = dt; GridView1.DataSource = dt; } else { dt = (DataTable)Session["TempTable"]; GridView1.DataSource = dt; } } protected void AddButton_Click(object sender, EventArgs e) { dt = (DataTable)Session["TempTable"]; // Fetching datatable from session DataRow dr = dt.NewRow(); // Adding new row to datatable dr[0] = "Jenny"; dr[1] = "LastName"; dr[2] = "Jenny@hotmail.com"; dr[3] = "867-5309"; dt.Rows.Add(dr); Session["TempTable"] = dt; // update datatable in session GridView1.DataSource = dt; // updated datatable is now new datasource GridView1.DataBind(); // calling databind on gridview } 中是否存在我未设置的属性,或者我的代码是否存在根本性错误?对解决方案的任何帮助都会很棒。提前致谢。

解决方案

我将Bart De Meyer建议的更改添加到我的GridView事件中,并将AddButton_Click的{​​{1}}属性设置为AutoGenerateColumns

1 个答案:

答案 0 :(得分:3)

您的点击事件将在页面加载事件后执行。

在您的点击事件中:

  • 从会话中获取数据表
  • 将新行添加到数据表
  • 更新会话中的表格
  • 将更新的数据表格式化为gridview datasource
  • 在gridview上调用DataBind

更新问题后。我试了一下:

private DataTable dt;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        dt= new DataTable();

        dt.Columns.Add("First", typeof(String));
        dt.Columns.Add("Last", typeof(String));
        dt.Columns.Add("Email", typeof(String));
        dt.Columns.Add("Phone", typeof(String));
        Session["TempTable"] = dt;
        grid.DataSource = dt;
    }
    else
    {
        dt = (DataTable)Session["TempTable"];
        grid.DataSource = dt;
    }
}

protected void btnAdd_Click(object sender, EventArgs e)
{
    dt = (DataTable)Session["TempTable"]; // Fetching datatable from session

    DataRow dr = dt.NewRow(); // Adding new row to datatable
    dr[0] = "Jenny";
    dr[1] = "LastName";
    dr[2] = "Jenny@hotmail.com";
    dr[3] = "867-5309";
    dt.Rows.Add(dr);

    Session["TempTable"] = dt;   // update datatable in session
    grid.DataSource = dt;   // updated datatable is now new datasource
    grid.DataBind();        // calling databind on gridview
}

应该有效: enter image description here

说明: Gridview ID参数= grid 按钮单击事件= btnAdd_Click