例如:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=D:\db1.mdb");
OleDbCommand com = new OleDbCommand(this.textBox1.Text,conn);
OleDbDataAdapter da = new OleDbDataAdapter(com);
conn.Open();DataSet ds = new DataSet();
da.Fill(ds,"test");
this.dataGrid1.DataSource = ds.Tables["test"];
conn.Close();this.textBox1.Text = this.dataGrid1.TableStyles[0].GridColumnStyles.Count.ToString();//为什么这句总是提示说index索引不对然而我是设计时状态下对DataGrid进行添加新列后就能正常运行?
DataGrid棒定数据源后不能得到其列数?请各位大侠帮帮小弟

解决方案 »

  1.   

    this.textBox1.Text = ((DataTable)dataGrid1.DataSource).Columns.Count.ToString();
      

  2.   

    可以得到列数:
    this.textBox1.Text = ds.Tables[0].Columns;
      

  3.   

    //获得DataGrid的列数
    this.textBox1.Text = ds.Tables["test"].Columns.Count.ToString();
      

  4.   

    this.textBox1.Text = this.dataGrid1.TableStyles[0].GridColumnStyles.Count.ToString();//为什么这句总是提示说index索引不对是因为你没有设置DataGrid的TableStyles啊,如果设置了这样取没问题,如果没设置就直接取DataTable的Column.count就可以了.
      

  5.   

    this.textBox1.Text = ((DataTable)dataGrid1.DataSource).Columns.Count.ToString();这个绝对可以!
      

  6.   

    楼上两位大哥的意思基本一致(tangyong12大哥的稍错)
    都是从DataSet着手
    但我有一个函数,他的参数是DataGrid类型的,你们这样转换我就无法使用了