zoukankan      html  css  js  c++  java
  • Dev GridControl

    (1)、gridView.AddNewRow()

    (2)、实现 gridView_InitNewRow 事件

    注:使用泛型集合绑定数据源,在GridView中实现自动添加行时,AddNewRow()方法不起效。在获取数据行时,
    GetDataRow()方法无法获取数据,如果使用gridcontrol用于只呈现数据可以使用泛型集合作为数据源,如果涉及到增、删、改建议使用
    DataTable作为数据源,这样以上两个方法可以正常使用。

    方法1(绑定DataTable作为数据源):

    Step1:绑定数据源

      gridControl.DataSource=dataTable;

    Step2:gridView_InitNewRow 事件

      DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
          //DataRow dr = this.gridView1.GetDataRow(this.gridView1.FocusedRowHandle);
          //初始化赋值
         view.UpdateCurrentRow();

    Step3:添加行触发事件

      gridView.AddNewRow()

    方法2(绑定List<T>作为数据源)

    Step1:绑定数据源

      List<DepartmentInfo> source=GetDepartmentList();            //获取泛型数据列表

      gridControl.DataSource=new BindingList<DepartmentInfo>(source);    //泛型类型转换

    Step2:gridView_InitNewRow 事件

      DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
          //DataRow dr = this.gridView1.GetDataRow(this.gridView1.FocusedRowHandle);
          //初始化赋值
         view.UpdateCurrentRow();

    Step3:添加行触发事件

      gridView.AddNewRow()

    方法2初始化赋值优化:

    //获取类型默认值

    public static object DefaultForType(Type targetType)
    {
           return targetType.IsValueType? Activator.CreateInstance(targetType) : null;  
    }

    初始化--gridView_InitNewRow

            private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
            {
                DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;

                object destinationRow = gridView1.GetFocusedRow();
                object sourceRow = gridView1.GetRow(0);     //获取数据源第一行作为模板原型
                System.Reflection.PropertyInfo[] propertyCollection = sourceRow.GetType().GetProperties();
                foreach (System.Reflection.PropertyInfo propertyInfo in propertyCollection)
                {
                    //获取第一行数据
                    //object aa = sourceRow.GetType().GetProperty(propertyInfo.Name).GetValue(sourceRow, null);
                    object aa = DefaultForType(sourceRow.GetType());
                    destinationRow.GetType().GetProperty(propertyInfo.Name).SetValue(destinationRow, aa, null);

                }

                view.UpdateCurrentRow();
            }

  • 相关阅读:
    VS2010-MFC(常用控件:列表框控件ListBox)
    VS2010-MFC(常用控件:按钮控件的编程实例)
    VS2010-MFC(常用控件:按钮控件Button、Radio Button和Check Box)
    VS2010-MFC(常用控件:编辑框Edit Control)
    VS2010-MFC(常用控件:静态文本框)
    VS2010-MFC(对话框:颜色对话框)
    VS2010-MFC(对话框:字体对话框)
    VS2010-MFC(对话框:文件对话框)
    VS2010-MFC(对话框:消息对话框)
    [洛谷P2113] 看球泡妹子
  • 原文地址:https://www.cnblogs.com/volts0302/p/6880012.html
Copyright © 2011-2022 走看看