动态创建允许多次填充的数据表

时间:2013-10-16 15:16:52

标签: asp.net vb.net

我正在尝试动态创建一个数据表,允许我在执行过程时多次填充单个记录。我知道如何使用我需要的列创建数据表但我的问题是,每次执行子例程添加记录时,它都会重新初始化数据表并清除以前填充的记录。如何创建数据表以使其仅初始化一次?我尝试在Page_Load事件期间使用'Not IsPostback'条件进行初始化,但这不起作用。还有其他想法吗?

Partial Public Class ContactLookup
Inherits System.Web.UI.Page

Dim dtContacts As New DataTable

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then

        dtContacts = New DataTable
        dtContacts.Columns.Add("Email", GetType(String))
        dtContacts.Columns.Add("AccountNum", GetType(String))

    End If

End Sub

Protected Sub btnAddContact_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAddContact.Click

    Dim AcctNum As String = txtLocAcct.Text
    Dim Email As String = txtEmail.Text
    Dim drContacts As DataRow = dtContacts.NewRow

    drContacts("Email") = Email
    drContacts("AccountNum") = AcctNum
    dtContacts.Rows.Add(drContacts)

End Sub

End Class

1 个答案:

答案 0 :(得分:0)

如果我是正确的,则需要查询返回的表作为数据表。如果它,那么你可以试试这个。像这样更改你的SqlCommand,

var dt =new DataTable(); // a new table to populate dynamically.

var reader = cmd.ExecuterReader(CommandBehaviour.SequentialAccess");

dt.Load(reader);

return dt; // now your dt will be query dependent.

很抱歉答案是在C#中。您可以在http://converter.telerik.com

将其转换为VB

更新了答案

在你的情况下,我建议创建一个类而不是datatables和datacolumns。请参阅以下示例:

public class Student
{
   public string Name{get;set;}
   public int Roll{get;set;}
}

在您的代码中

private Student _stud = new Student();
private void FillObjects(){
  _stud.Name= txtName.Text;
 _stud.Roll=Convert.ToInt32(txtRoll.Text);
}

private void ButtonClick{
 FillObjects();
 YourClass.SaveMethod(_stud);
}