如何将多个记录添加到gridview

时间:2013-03-21 14:11:30

标签: c# asp.net

我创建了一些文本框和一个按钮。当按下按钮时我想在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();

2 个答案:

答案 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();