背景
所以我几天前就开始在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
。
答案 0 :(得分:3)
您的点击事件将在页面加载事件后执行。
在您的点击事件中:
更新问题后。我试了一下:
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
}
应该有效:
说明: Gridview ID参数= grid 按钮单击事件= btnAdd_Click