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);//取消选中 } } }