C# 如何向GridView添加新行

C# 如何向GridView添加新行,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在制作ASP.net应用程序,我想在那里有一些表格。我尝试使用Grindview,但当我尝试添加第二行(来自代码)时,第二行将替换第一行 以下是代码: DataTable dt = new DataTable(); if (dt.Columns.Count == 0) { dt.Columns.Add("thing", typeof(string)); dt.Columns.Ad

我正在制作ASP.net应用程序,我想在那里有一些表格。我尝试使用Grindview,但当我尝试添加第二行(来自代码)时,第二行将替换第一行

以下是代码:

DataTable dt = new DataTable();

            if (dt.Columns.Count == 0)
            {
                dt.Columns.Add("thing", typeof(string));
                dt.Columns.Add("thing2", typeof(string));
            }
            DataRow NewRow = dt.NewRow();
            NewRow[0] = label1.Text;
            NewRow[1] = label2.Text;
            dt.Rows.Add(NewRow);
            GridView1.DataSource = dt;
            GridView1.DataBind();

我希望Gridview有两行和按钮,每次点击都会显示新行。

我不知道你到底在问什么或想做什么,但这可能会有所帮助

  protected void Button1_Click(object sender, EventArgs e)

  {

   DataTable dt = new DataTable();

   if (dt.Columns.Count == 0)
   {
       dt.Columns.Add("nameofcolumn1", typeof(string));
       dt.Columns.Add("nameofcolumn2", typeof(string));
       dt.Columns.Add("nameofcolumn3", typeof(string));
   }

   DataRow NewRow = dt.NewRow();
   NewRow[0] = value1;
   NewRow[ 1] = value2;
   dt.Rows.Add(NewRow); 
   GridView1.DataSource = dt;
   GridViewl.DataBind();

   }
也请访问此链接

您可以使用循环添加行,在循环中创建行,添加内容,然后将行添加到数据表中

DataTable dt = new DataTable();

if (dt.Columns.Count == 0)
{
     dt.Columns.Add("thing", typeof(string));
     dt.Columns.Add("thing2", typeof(string));
}

for(int i = 0; i < 3; i++)
{
     DataRow dr = dt.NewRow();
     dr[0] = "foo";
     dr[1] = "bar";
     dt.Rows.Add(dr);
}

如果您手头有定义gridview样式的HTML asp.net代码(以下是一个示例):


然后,您所要做的就是创建对象的
列表
,并将其绑定到gridView,如果您想添加一些内容,只需添加到列表并再次绑定即可(她的示例):

List类列表;
受保护的void BindFirstTime(对象发送方,事件参数e)
{
classList=新列表();
添加(新的aClass(“一”);
添加(新的aClass(“两”);
Grv.DataSource=classList;
Grv.DataBind();
}
受保护的void AddObject(对象发送方,事件参数e)
{
添加(新的aClass(“三个或更多!”);
Grv.DataSource=classList;
Grv.DataBind();
}

这对我来说是个简单的方法,希望对我有所帮助

请编辑您的问题并发布您用于添加行的代码。我认为您应该用您迄今为止尝试过的示例以及您期望的输出来澄清您的问题。查看“添加按钮”是否是gridview的一部分。。。这可能很难处理…当我单击一个按钮时,这段代码使Gridview具有一行,当我再次单击时,新行将替换旧行。第二行必须位于第一行下方。请检查下面的链接,这将有所帮助you@TrotlOtl-您是否事先添加了列?它对我来说没有错误。aClass和db到底是什么?对不起,aClass是一个类,任何你创建的类,你根本不被允许看到db,我的错误,但如果你好奇的话,它是实体Linq代码,我用它来查询数据库。通过使用您看到的db对象,我可以用几行代码在gridview中显示数据(来自数据库)。。。一件好东西,又快又容易,我应该放什么而不是放在教室里?一串抱歉,但我不明白这一点。您必须查看您的gridview设计,如果它需要一个类似(id、名称、年龄)的属性,那么您的类必须有一个名为id的属性,另一个名为name,另一个名为age。属性的示例:
stringname{get;set;}
现在我想到了它,您能在您的问题中展示gridview的设计吗?
GridView1.DataSource = dt;
GridViewl.DataBind();
 <asp:GridView ID="grvModel"  runat="server" AlternatingRowStyle-BackColor="#eeeeee" BackColor="#aaccff"  AutoGenerateColumns="false">
    <Columns>

        <asp:TemplateField >
                <ItemTemplate>
                    <asp:Button id="btnDel" CommandName="Delete" OnClientClick="btnDel_click" runat="server"Text="Delete" />
                </ItemTemplate>
         </asp:TemplateField>

        <asp:TemplateField >
                <ItemTemplate>
                    <asp:TextBox runat="server" ID="lblWrite" Text='write here' />
                </ItemTemplate>
         </asp:TemplateField>
    </Columns>
 </asp:GridView>
List<aClass> classList;

protected void BindFirstTime(object sender, EventArgs e)
{
    classList= new List<aClass>();
    classList.Add(new aClass("one"));
    classList.Add(new aClass("two"));
    Grv.DataSource = classList;
    Grv.DataBind();
}

protected void AddObject(object sender, EventArgs e)
{
    classList.Add(new aClass("three or more !"));
    Grv.DataSource = classList;
    Grv.DataBind();
}