如何添加多个记录到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();

如何添加多个记录到gridview

首先,我建议你不要使用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();