如何添加多个记录到gridview
本文关键字:记录 gridview 何添加 添加 | 更新日期: 2023-09-27 18:05:02
我已经创建了一些文本框和一个按钮。按下按钮时,我想在网格视图中显示每条新记录,但只使其工作,添加记录,然后当您再次添加它时,旧的消失,新的出现。
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();
首先,我建议你不要使用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();
您的代码不工作,因为您每次都创建一个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();