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);
            }
        }

解决方案 »

  1.   

    DataSet ds = new DataSet("dt");
    你这是全局的么
      

  2.   

    dx=ds.Tables[0];
    或者
    dx=ds.Tables["dt"];
      

  3.   

    我发现下面的代码没有把表加入到Dataset中呢??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中
            }
    我是用
    ds.Tables.Count.ToString();
    发现结果为0
      

  4.   


    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));
            }
      

  5.   

    首先看看数据有没有填到DataSet中.
      

  6.   


    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中
            }
      

  7.   


    还是不行呢??
    //为什么用线程就不能给变量DS(DataSet)加入表呢??
                //直接调用loaddata()后,再用addlistviewData(listView1);却是可以的
      

  8.   

     Thread thread = new Thread(new ThreadStart()); 
     thread.Start();