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