我想继续向已包含数据的数据表添加数据。
在此方法中,获取的数据如下:dt = { 1, 2 }.
public class GetRowOne()
{
// some code
if(contains == null)
{
DataRow dr = dt.NewRow();
string[] array1 = lstHeader[1].ToArray();
for (int i = 0; i < 8; i++)
dr[i] = array1[i];
}
// some code
}
dt.Rows.Add(dr.ItemArray);
现在,在另一种方法中,我也像这段代码一样创建并运行它。
public class GetRowTwoAndThree()
{
// some code
DataRow dr = dt.NewRow();
string[] array1 = lstHeader[1].ToArray();
for (int i = 0; i < 8; i++)
dr[i] = array1[i];
// some code
}
dt.Rows.Add(dr.ItemArray);
它会在dt
中返回新值:dt = {4,5}
我认为错误就像:DataRow dr = dt.NewRow();
或行:dt.Rows.Add(dr.ItemArray);
你会看:dt.Rows.Add(dr.ItemArray)
。之前的所有数据都将为null,它只会向dt
添加新值。
我希望dt
保存旧数据和新数据,它应该是:
dt = { 1, 2, 3, 4 }
答案 0 :(得分:1)
将数据存储在ViewState["OldData"]
中,再次添加新行后,将商店dt存储在ViewState["OldData"]
中。
如果在同一页面中调用方法然后将其存储在viewstate中,您还可以存储在会话中或为该数据表创建get set方法
DataTable dt{get; set;}
编辑 - :
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
dt.Columns.Add("Column1");
dttest = dt;
}
public void GetRowOne()
{
DataRow dr = dt.NewRow();
dr["Column1"] = "Test";
dt.Rows.Add(dr);
dttest = dt;
}
DataTable dttest { get; set; }
private void button1_Click(object sender, EventArgs e)
{
GetRowOne();
}