0

我正在尝试动态创建一个数据表,该数据表将允许我在执行过程时多次填充单个记录。我知道如何使用我需要的列创建数据表,但我的问题是每次执行子例程以添加记录时,它都会重新初始化数据表并清除先前填充的记录。如何创建数据表以使其仅初始化一次?我尝试在 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
4

1 回答 1

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

更新的答案

在您的情况下,我建议创建一个类而不是数据表和数据列。请参阅下面的示例:

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);
}
于 2013-10-16T15:29:29.233 回答