DataTable GridControl 数据结构

GridControl  

int[] rows = this.gridView1.GetSelectedRows(); //获取选中行  gridView1
int index=gridView1.FocusedRowHandle;
//获取选中行id
 string id = FRDataGridView.GetRowCellValue(index, FRDataGridView.Columns["mainid"]).ToString();
//选中行行号

int rowindex = gridView1.FocusedRowHandle;

//选中列的列号
int columnindex = gridView1.Columns.IndexOf(gridView1.FocusedColumn);

this.gridView1.GetDataRow(rowindex)[columnindex ] = "";//给选中单元格赋值

this.gridView1.GetDataRow(rowindex)["aaa"] = ""

gridView1.SetFocusedValue("123");//设置单元格值:

gridView1.GetFocusedValue();//获取单元格值:

DataTable dt = ReturnDataGridView.DataSource as DataTable;//将GridControl  的DataSource转为DataTable 

    DataTable dt = new DataTable();
                    dt.Columns.Add("labelname");//增加列
                    dt.Columns.Add("file");
                    DataRow rowTable = dt.NewRow();//增加行
                    rowTable["labelname"] = labelname;
                    rowTable["file"] = file;
                    dt.Rows.Add(rowTable);

将DataTable中的某一行复制到另一个新的DataTable

方法一:直接复制一个DataTable,然后清空数据(Column结构还保留),最后再用ImportRow()方法从dt中加入需要的Row;

   DataTable dt2 = new DataTable();
            dt2 = dt.Copy();
            dt2.Rows.Clear();
            dt2.ImportRow(dt.Rows[0]);//这是加入的是第一行

例如:

int[] rows = this.gridView1.GetSelectedRows();
   DataTable dt = ReturnDataGridView.DataSource as DataTable;    
//
将GridControl  的DataSource转为DataTable
DataTable dataTable = new DataTable(); dataTable = dt.Copy();

dataTable.Rows.Clear();
foreach (int row in rows) 
{
dataTable.ImportRow(dt.Rows[row]);
  //dataTable.Rows.Add(dt.Rows[row]) 将会出错:System.ArgumentException: 该行已经属于另一个表。
}
GridControl gridControl
= new GridControl();
ReturnDataGridView.DataSource
= dataTable;

 应用:

/// <summary>
        /// Convert Type of List To Type of DataTable
        /// </summary>
        /// <typeparam name="T">Generic Parameter</typeparam>
        /// <param name="list">Collection Parameter</param>
        /// <returns></returns>
        public static DataTable ConvertToDataTable<T>(List<T> list)
        {
            DataTable dt = new DataTable();
            Type t = typeof(T);
            PropertyInfo[] props = t.GetProperties();
            if (!dataTableDic.ContainsKey(typeof(T).Name))
            {
                foreach (var item in props)
                {
                    dt.Columns.Add(item.Name, typeof(string));
                }
                dataTableDic.Add(typeof(T).Name,dt);
            }
            else
            {
                dt = dataTableDic[typeof(T).Name];
            }

            foreach (var item in list)
            {
                DataRow row = dt.NewRow();
                for (int index = 0; index < props.Length; index++)
                {
                    row[index] = props[index].GetValue(item, null);
                }
                dt.Rows.Add(row);
            }
            return dt;
        }
 //FastReport单集合

Report report = new Report();
            report.Load(@"TemplatesSingle.frx");
            DataTable dt = TypeConverters.ConvertToDataTable<Manufacturer>(manus);
            dt.TableName = "Table1";
            DataSet set = new DataSet();
            set.Tables.Add(dt);
            report.RegisterData(set);
            report.Show();

 将GridControl转化为DataTable:

 //将datagridview转为datatable(仅列转换,获取架构)
        public DataTable GetDgvFieldNameToTable(DevExpress.XtraGrid.Views.Grid.GridView dgv)
        {
            DataTable dt = new DataTable();

            // 列强制转换
            for (int count = 0; count < dgv.Columns.Count; count++)
            {
                DataColumn dc;


                if (dgv.Columns[count].Name == "prepayColumn")//为布尔类型
                {
                    dc = new DataColumn(dgv.Columns[count].FieldName.ToString().Replace("Column", "").Replace("Col", ""), typeof(Boolean));
                }
                else
                {
                    dc = new DataColumn(dgv.Columns[count].FieldName.ToString().Replace("Column", "").Replace("Col", ""));
                }
                dt.Columns.Add(dc);
            }
            return dt;
        }

 全选取消全选:

        //全选  取消全选
        private void btnselectall_Click(object sender, EventArgs e)
        {
            int count = 0;
            // 全选
            for (int i = 0; i < detailGridView.RowCount; i++)
            {
                if (!(bool)detailGridView.GetRowCellValue(i, detailGridView.Columns["ischeck"]))
                {

                    detailGridView.SetRowCellValue(i, detailGridView.Columns["ischeck"], true);//选中
                }
                else
                {
                    count++;
                }
            }
            //取消全选
            if (count == detailGridView.RowCount)
            {
                for (int i = 0; i < detailGridView.RowCount; i++)
                {
                    detailGridView.SetRowCellValue(i, detailGridView.Columns["ischeck"], false);//取消选中
                }
            }
        }
原文地址:https://www.cnblogs.com/tiancaige/p/13596870.html