由于得到的DataSet里不知道具体有几张表,貌似我用Grid_Info指定为数据源后,用this.GridView_Info.Columns["列明"]
去设置属性时候不能确定是那张表的列,所以老是报未将对象引用到实例,如果Grid_Info.DataSource = dataset.Tables[0]时候就可以找到那个列了,现在的问题是我做成用户控件后,每个功能不一样,有的只有一张表,有的有两张表,我想重新构建一个DataTable作为Grid_Info的数据源,有点代码写不好,请前辈们指点下谢谢。。Grid_Info//类型DevExpress.XtraGrid.GridControl 窗体上拖出的控件
GridView_Info //类型DevExpress.XtraGrid.Views.Grid.GridView  窗体上拖出的控件DataTable _dt = new DataTable();
//创建列                                  
foreach (DataTable dt in m_dsAlarms.Tables)
{
      foreach (DataColumn dc in dt.Columns)
      {
         DataColumn _dc = new DataColumn(dc.ColumnName);
         if (!_dt.Columns.Contains(_dc.ColumnName))
             _dt.Columns.Add(_dc);
      }
}
//怎么把几张表里的数据整合到_dt,这段有点问题Grid_Info.DataSource = _dt;
this.GridView_Info.Columns["列明"].......//设置属性

解决方案 »

  1.   

    楼主是不是想把  DATASET 中 多个 DataTable 给合并成一个对吧。
      

  2.   


    DataTable _dt = new DataTable(); //全局变量private void Button1_Click(object sender, EventArgs e)
            {
     DataSet m_dsAlarms = new DataSet();               
                foreach (DataTable dt in m_dsAlarms.Tables)
                {
                    UniteDataTable(_dt, dt, "new");
                }}        /// <summary>
            /// 合并DataTable 
            /// </summary>
            /// <param name="dt1">DataTable1</param>
            /// <param name="dt2">DataTable2</param>
            /// <param name="DTName">新DataTable名字</param>
            /// <returns></returns>
     private DataTable UniteDataTable(DataTable dt1, DataTable dt2, string DTName)
            {
                DataTable dt3 = dt1.Clone();
                for (int i = 0; i < dt2.Columns.Count; i++)
                {
                    dt3.Columns.Add(dt2.Columns[i].ColumnName);
                }
                object[] obj = new object[dt3.Columns.Count];            for (int i = 0; i < dt1.Rows.Count; i++)
                {
                    dt1.Rows[i].ItemArray.CopyTo(obj, 0);
                    dt3.Rows.Add(obj);
                }            if (dt1.Rows.Count >= dt2.Rows.Count)
                {
                    for (int i = 0; i < dt2.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt2.Columns.Count; j++)
                        {
                            dt3.Rows[i][j + dt1.Columns.Count] = dt2.Rows[i][j].ToString();
                        }
                    }
                }
                else
                {
                    DataRow dr3;
                    for (int i = 0; i < dt2.Rows.Count - dt1.Rows.Count; i++)
                    {
                        dr3 = dt3.NewRow();
                        dt3.Rows.Add(dr3);
                    }
                    for (int i = 0; i < dt2.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt2.Columns.Count; j++)
                        {
                            dt3.Rows[i][j + dt1.Columns.Count] = dt2.Rows[i][j].ToString();
                        }
                    }
                }
                dt3.TableName = DTName;
                _dt = dt3;
                return dt3;
            }  写了个你看看
      

  3.   


     DataTable _dt = new DataTable();                        foreach (DataTable dt in m_dsAlarms.Tables)
                            {
                                foreach (DataColumn dc in dt.Columns)
                                {
                                    DataColumn _dc = new DataColumn(dc.ColumnName);
                                    if (!_dt.Columns.Contains(_dc.ColumnName))
                                        _dt.Columns.Add(_dc);
                                }
                            }
                            
                            foreach (DataTable dt in m_dsAlarms.Tables)
                            {
                                foreach (DataRow row in dt.Rows)
                                {
                                    DataRow _row = _dt.NewRow();
                                    foreach (DataColumn _dc in _dt.Columns)
                                    {
                                        try
                                        {
                                            if (row[_dc.ColumnName] != null)
                                            {
                                                _row[_dc.ColumnName] = row[_dc.ColumnName];
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            XtraMessageBox.Show(ex.Message.ToString());
                                        }
                                    }
                                    _dt.Rows.Add(_row);
                                }
                            }