zoukankan      html  css  js  c++  java
  • 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);//取消选中
                    }
                }
            }
  • 相关阅读:
    unigui+fastreport报表打印
    MySQL索引类型总结和使用技巧以及注意事项
    Vue.js 和 MVVM
    Go -- 中结构体与字节数组能相互转化
    iOS算法合集
    postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    JS注入
    JS页面间传值
    上手ReactiveCocoa之基础篇
    数据结构与算法题整理
  • 原文地址:https://www.cnblogs.com/tiancaige/p/13596870.html
Copyright © 2011-2022 走看看