我创建了一些文本框和一个按钮。当按下按钮时我想在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();
答案 0 :(得分: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; }
}
您必须在Session变量中维护数据,这样每次回发都不会丢失数据:
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();
答案 1 :(得分: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();