DataSet ds = new DataSet("dt");
void loaddata()
{
SqlConnection cn = new SqlConnection(cnstr);
if (cn.State == ConnectionState.Closed) cn.Open();
string sel = "select invcode,invname,invspec,invunit from inventory";
SqlCommand cmd = new SqlCommand(sel, cn);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt= new DataTable();
dt.Columns.Add("a", typeof(string));
dt.Columns.Add("b", typeof(string));
while (dr.Read())
{
DataRow r = dt.NewRow();
r["a"] = dr[0].ToString();
r["b"] = dr[1].ToString();
dt.Rows.Add(r);
Thread.Sleep(100);
}
cn.Dispose();
ds.Tables.Add(dt);//把这个表加入Dataset中
}
void addlistviewData(ListView lv)
{
DataTable dx = new DataTable();
dx=ds.Tables["名字是什么呢?"];
for (int i = 0; i < dx.Rows.Count; i++)
{
ListViewItem lvv = new ListViewItem(dx.Rows[i][0].ToString());
lvv.SubItems.Add(dx.Rows[i][1].ToString());
lv.Items.Insert(lv.Items.Count, lvv);
//Thread.Sleep(5);
}
}
你这是全局的么
或者
dx=ds.Tables["dt"];
void loaddata()
{
SqlConnection cn = new SqlConnection(cnstr);
if (cn.State == ConnectionState.Closed) cn.Open();
string sel = "select invcode,invname,invspec,invunit from inventory";
SqlCommand cmd = new SqlCommand(sel, cn);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt= new DataTable();
dt.Columns.Add("a", typeof(string));
dt.Columns.Add("b", typeof(string));
while (dr.Read())
{
DataRow r = dt.NewRow();
r["a"] = dr[0].ToString();
r["b"] = dr[1].ToString();
dt.Rows.Add(r);
Thread.Sleep(100);
}
cn.Dispose();
ds.Tables.Add(dt);//把这个表加入Dataset中
}
我是用
ds.Tables.Count.ToString();
发现结果为0
DataSet ds = new DataSet();
Thread th = null;
void loaddata()
{
SqlConnection cn = new SqlConnection(cnstr);
if (cn.State == ConnectionState.Closed) cn.Open();
string sel = "select invcode,invname,invspec,invunit from inventory";
SqlCommand cmd = new SqlCommand(sel, cn);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable("zjh");
dt.Columns.Add("a", typeof(string));
dt.Columns.Add("b", typeof(string));
dt.PrimaryKey = new DataColumn[] { dt.Columns["a"] }; while (dr.Read())
{
DataRow r = dt.NewRow();
r["a"] = dr[0].ToString();
r["b"] = dr[1].ToString();
dt.Rows.Add(r);
Thread.Sleep(1);
}
cn.Dispose();
ds.Tables.Add(dt);
}
void addlistviewData(ListView lv)
{
DataTable dx = new DataTable();
dx = ds.Tables["zjh"]; //这里Ds没有表,用ds.Tables.Count.ToString(); 值为0
for (int i = 0; i < dx.Rows.Count; i++)
{
ListViewItem lvv = new ListViewItem(dx.Rows[i][0].ToString());
lvv.SubItems.Add(dx.Rows[i][1].ToString());
lv.Items.Insert(lv.Items.Count, lvv);
}
}
private void Form1_Load(object sender, EventArgs e)
{
listView1.View = View.Details;
listView1.FullRowSelect = true;
listView1.GridLines = true;
listView1.Columns.Add("aa", 100, HorizontalAlignment.Left);
listView1.Columns.Add("aa", 100, HorizontalAlignment.Left);
listView1.Columns.Add("aa", 100, HorizontalAlignment.Left);
listView1.Columns.Add("aa", 100, HorizontalAlignment.Left);
}
private void button1_Click(object sender, EventArgs e)
{
//为什么用线程就不能给变量DS(DataSet)加入表呢??
th = new Thread(new ThreadStart(dosome));
timer1.Enabled = false;
textBox2.Text = "this is ok";
addlistviewData(listView1);
}
private void dosome()
{
this.Invoke(new Action(loaddata));
}
DataSet ds = new DataSet("dt");
void loaddata()
{
SqlConnection cn = new SqlConnection(cnstr);
if (cn.State == ConnectionState.Closed) cn.Open();
string sel = "select invcode,invname,invspec,invunit from inventory";
SqlCommand cmd = new SqlCommand(sel, cn);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt= new DataTable();
dt.Columns.Add("a", typeof(string));
dt.Columns.Add("b", typeof(string));
DataRow r ;//放循环外面试试
while (dr.Read())
{
r=dt.NewRow();
r["a"] = dr[0].ToString();
r["b"] = dr[1].ToString();
dt.Rows.Add(r);
Thread.Sleep(100);
}
cn.Dispose();
ds.Tables.Add(dt);//把这个表加入Dataset中
}
还是不行呢??
//为什么用线程就不能给变量DS(DataSet)加入表呢??
//直接调用loaddata()后,再用addlistviewData(listView1);却是可以的
thread.Start();