2012-02-15 420 views
10

我有一个文本框和添加按钮的形式。如何将新行添加到一个DataTable vb.net

  1. 用户可以在文本框上写下名称,然后单击添加按钮。它将保存在带有自动ID的数据表中。
  2. 后,文本框被清除,用户可以写在文本框中输入另一个名称,然后单击按钮。
  3. 这应该添加到现有ID + 1的内存上的现有数据表。
  4. 在gridview上显示。 (这只是为了显示目的,以确认它的工作)

我有这样的数据表。

Button1.click() event 

    Dim name = txtname.Text 
    Dim dt As New DataTable 
    dt.Columns.Add("ID", GetType(Integer)) 
    dt.Columns.Add("Name", GetType(String)) 
    Dim N As Integer = dt.Columns("ID").AutoIncrement 
    dt.Rows.Add(N, name) 
    GridView1.DataSource = dt 
    GridView1.DataBind() 
    txtname.Text = "" 

目前,我有一段时间像上面的代码。在真正的程序中,它不仅仅是名称,它不只是一个数据表,所以我只是模拟一些代码。

这个代码的aspx。

 <asp:TextBox ID="txtname" runat="server"> 
     </asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" /> 
     <asp:GridView ID="GridView1" runat="server"> 
     </asp:GridView> 

任何人都可以告诉我如何做到这一点?我明白我的代码被破坏了,但不正确,但我只需要添加一些代码,这样你们就不必为我从头开始工作了。

非常感谢。

回答

21

这里是增加一个新的行,该行第一列上使用自动增加一个数据表的例子:

定义表结构:

Dim dt As New DataTable 
    dt.Columns.Add("ID") 
    dt.Columns.Add("Name") 
    dt.Columns(0).AutoIncrement = True 

添加新行:

Dim R As DataRow = dt.NewRow 
    R("Name") = txtName.Text 
    dt.Rows.Add(R) 
    DataGridView1.DataSource = dt 
+0

这是行不通的尊敬d ... – lawphotog 2012-02-16 09:32:36

+0

它增加了名称,但它在行替换以前的名称(0) – lawphotog 2012-02-16 09:33:52

+0

不要定义你的数据表按钮点击事件,如果它有以前的数据,你需要保留在更广的范围。这样你就可以添加它,而不需要调用New并删除所有以前的数据。如果你带私人去DT作为类级别的数据表,定义结构类似负载的地方(而不是在回发)当你在点击按钮添加一行首先dt的也不会清除所有现有的信息。 – Jay 2012-02-16 11:04:08

4

首先您需要定义数据表结构如下所示:

Dim dt As New DataTable 
dt.Columns.Add("ID", Type.GetType("System.String")) 
dt.Columns.Add("Name",Type.GetType("System.String")) 

,然后添加一行,如:

Dim dr As DataRow = dt.NewRow 
dr("ID") = System.GUID.NewGUID() 
dr("Name") = txtName.Text 
dt.Rows.Add(dr) 
DataGridView1.DataSource = dt 
DataGridView1.DataBind() 
相关问题