一个不利运用DevExpress。说明

说明

WPF DEV CellTemplateSelector(八个正确利用DevExpress CellTemplateSelector的德姆o),wpfdevexpress

说明

小编在品种中依据须要需求用到WPF Dev
CellTemplateSelector时,碰着许多坑。曾一度想要放弃采取模板转换器,但又心有不甘,终于在相连大力下,达到了供给的供给。所以写下去和豪门享用。假设有同一嫌疑的人,能够少走些弯路。小编第①回写博客,文笔倒霉,还请见谅。

需求

澳门金沙国际 1

 

要求相当的粗略,选用格局下拉框选中时控方法依旧价格控制形式,前面的控制点单元格对应展现日期控件或文本控件。

思路

刚获得这几个要求,就悟出了模版选取器。然而之前也尚未用过模板转换器,所以走了千千万万弯路。我们先看dev官方文书档案的印证

When using CellTemplate (or DataViewBase.CellTemplate) note the following:

To enable data editing, use an editor shipped with the DevExpress Data Editors Library for WPF. The editor's Name must be set to 'PART_Editor'.

When the editor's Name is set to PART_Editor, the grid automatically adjusts its appearance and synchronizes the editor with a source field specified by the FieldName or Binding properties.

Standard controls can be used in CellTemplate only for display purposes. Data editing is not allowed.

Templates specified via the DisplayTemplate and/or EditTemplate are ignored.

A column's in-place editor specified via EditSettings, is also ignored.

意思乃是模板控件必须命名为“PA中华VT_艾德itor”,并且模板不要求绑定数据源,对应的GridControl的列绑定数据源即可,GridControl会自动将模板嵌入展示。我刚初阶正是没有命名规范,并且在模板控件中绑定了数量源所以展现平素有题目。根据必要写出模板如下。

  <Window.Resources>
        <DataTemplate x:Key="FirstTemplate">
            <StackPanel>
                <dxe:DateEdit x:Name="PART_Editor"  Mask="yyyy-MM-dd" MaskUseAsDisplayFormat="True">
                </dxe:DateEdit>
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="SecondTemplate">
            <StackPanel>
                <dxe:TextEdit x:Name="PART_Editor"
                              MaskType="Numeric" Mask="n" MaskUseAsDisplayFormat="True" AllowNullInput="False" >
                </dxe:TextEdit>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>

再就是CellTemplateSelector需求持续DataTemplateSelector类,并且完毕SelectTemplate方法依照标准重临3个您所需的Template.代码如下

 public  class SettingDataTemplateSelector: DataTemplateSelector
    {
        public DataTemplate FirstTemplate
        {
            get;
            set;
        }
        public DataTemplate SecondTemplate
        {
            get;
            set;
        }


        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            EditGridCellData data = (EditGridCellData)item;
            Setting setting = data.RowData.Row as Setting;
            if (setting != null)
            {

                if (setting.ControlMode == 1)
                    return element.FindResource("FirstTemplate") as DataTemplate;
                else
                    return element.FindResource("SecondTemplate") as DataTemplate;
            }
            return base.SelectTemplate(item, container);
        }
    }

接下来前台xmal的CellTemplateSelector中援引接纳器,代码如下

      <dxg:GridColumn x:Name="ControlPointDataTime" Binding="{Binding Path=ControlPoint,Mode=TwoWay}" Header="控制点" >
                    <dxg:GridColumn.CellTemplateSelector>
                        <local:SettingDataTemplateSelector
                                                             FirstTemplate="{StaticResource FirstTemplate}"
                                                             SecondTemplate="{StaticResource SecondTemplate}" />
                    </dxg:GridColumn.CellTemplateSelector>

                </dxg:GridColumn>

着力的急需就做到了,是还是不是望着很简短。其实当您觉得不难是因为您打探了DEV的有的编写制定,比如模板控件的命名必须是“PAPAJEROT_艾德itor”,还有绑定的地方,任何2个地点出错了前台运转展现都以不会顺畅的,这一个时候你就会找不到化解的法子,从而达不到你想要的指标。上面的必要实际上还有一个标题,比如:当你添加一条记下是金额控制的,此时这条记下已经添加到数据中了。假若你在界面上改动将下拉框选中改为时间决定,前面一列由于因为不可能转移为时间格式,所以体现依然有题目。此时如何做呢,小编想开了GridControl的CellValueChanged事件,当自家切换控制方法时,前边一列作者给它清空,这样一向让用户输入不就好了。在此处本身也将代码贴出来。

   private void ViewSimulate_CellValueChanged(object sender, CellValueChangedEventArgs e)
        {
            if (e.Column == ComControlMode)
            {
                ((GridControl) e.Source.DataControl).SetCellValue(e.RowHandle,ControlPointDataTime,null);
            }
        }

到此,项目周转起来望着还能够,即使供给很不难,但也折腾了自家一段时间,以后作者会不断的写博客来记录本身遇到的坑来和大家大饱眼福,同时也便于小编要好查看。最后,小编将总体的demo上传供我们参考,笔者用的dev的本子是15.2.4,纵然你的版本和自个儿的差异等,能够将demo中的引用删除换来自身的就能够了。

补充:当系统时间设置如下时,前台界面将体现混乱。

澳门金沙国际 2

澳门金沙国际,前台呈现如下

澳门金沙国际 3

当自家发现那一个难题,作者一世从未更好的化解办法。前台模板Date艾德it的Mask、DisplayFormatString以及MaskUseAsDisplayFormat都设为True。于是自身向DevSupport寻求支持。DevSupport给出解释如下:

The cause of the issue is that date values are stored as string values. In this scenario, DXGrid posts the values in the current culture to maintain end-user input. 
DateEdit editors, however, use an invariant culture to parse string values.
To resolve this issue, you can either store the date values as DateTime or additionally convert posted values. With your current implementation,
the second approach can be implemented by setting Binding.Converter to a custom converter

在此,小编付诸第三种办法的兑现形式。

public class ConvertDateTime : MarkupExtension, IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            DateTime date;
            if (value is string && DateTime.TryParse((string)value, out date))
                return date.ToString(CultureInfo.InvariantCulture);
            return value;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }

前台添加Convert转化绑定

<dxg:GridColumn x:Name="ControlPointDataTime" Binding="{Binding Path=ControlPoint,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True,Converter={local:ConvertDateTime}}" Header="控制点" >

到此,难点就一蹴即至了。

补充2:对于地点的切换控制情势时,后边一列清空的须求那里有更不难的贯彻格局,只需求将您自定义的类中的属性加上部分逻辑控制就好了,代码如下:

   private int _ControlMode;

        public int ControlMode
        {
            get { return _ControlMode; }
            set { _ControlMode = value;
                ControlPoint = null;
            }
        }

 将修改后的源码重新上传。

 源码下载:

DEV
CellTemplateSelector(3个正确使用DevExpress
CellTemplateSelector的德姆o),wpfdevexpress 表达小编在项目中根据要求要求用到WPF Dev CellTemplateSelector时,…

Gridcontrol设置

自家在类型中遵照须求必要用到WPF Dev
CellTemplateSelector时,蒙受重重坑。曾一度想要遗弃行使模板转换器,但又心有不甘,终于在持续大力下,达到了急需的供给。所以写下去和我们大饱眼福。借使有雷同思疑的人,能够少走些弯路。作者第二回写博客,文笔不佳,还请见谅。

本人在品种中遵照供给须求用到WPF Dev
CellTemplateSelector时,遇到不少坑。曾一度想要吐弃使用模板转换器,但又心有不甘,终于在时时刻刻努力下,达到了供给的渴求。所以写下来和大家享用。假如有同等困惑的人,能够少走些弯路。作者第一遍写博客,文笔倒霉,还请见谅。

1: 拖进去的时候别拖到tabcontrol外边, 否则dock 停靠的时候,停靠错了地点. 

需求

需求

2:去掉Drag a column header here to group….. 

澳门金沙国际 4

澳门金沙国际 5

澳门金沙国际 6

 

 

ShowGroupPanel = False

须求一点也不细略,选择方式下拉框选中时间决定方法也许价格控制格局,前边的控制点单元格对应展现日期控件或文本控件。

急需非常粗大略,采取格局下拉框选中时间决定方法可能价格控制情势,后边的控制点单元格对应展现日期控件或文本控件。

 tabcontrol 设置:

思路

思路

澳门金沙国际 7来得关闭图标

刚得到这一个需要,就想开了模版采取器。然则以前也不曾用过模板转换器,所以走了众多弯路。我们先看dev官方文书档案的验证

刚获得这些须要,就想到了模版接纳器。可是在此之前也从没用过模板转换器,所以走了不少弯路。大家先看dev官方文书档案的证实

3:tabcontrol 中无法要保留四个tabpage ,不然gridcontrol 拖进去
无控件能够承接,导致丢失.那样就无法在girdcontrol 控件里边可视化操作了.

When using CellTemplate (or DataViewBase.CellTemplate) note the following:

To enable data editing, use an editor shipped with the DevExpress Data Editors Library for WPF. The editor's Name must be set to 'PART_Editor'.

When the editor's Name is set to PART_Editor, the grid automatically adjusts its appearance and synchronizes the editor with a source field specified by the FieldName or Binding properties.

Standard controls can be used in CellTemplate only for display purposes. Data editing is not allowed.

Templates specified via the DisplayTemplate and/or EditTemplate are ignored.

A column's in-place editor specified via EditSettings, is also ignored.
When using CellTemplate (or DataViewBase.CellTemplate) note the following:

To enable data editing, use an editor shipped with the DevExpress Data Editors Library for WPF. The editor's Name must be set to 'PART_Editor'.

When the editor's Name is set to PART_Editor, the grid automatically adjusts its appearance and synchronizes the editor with a source field specified by the FieldName or Binding properties.

Standard controls can be used in CellTemplate only for display purposes. Data editing is not allowed.

Templates specified via the DisplayTemplate and/or EditTemplate are ignored.

A column's in-place editor specified via EditSettings, is also ignored.

4:显示tabpage页头

意思乃是模板控件必须命名为“PATiggoT_艾德itor”,并且模板不须求绑定数据源,对应的GridControl的列绑定数据源即可,GridControl会自动将模板嵌入体现。笔者刚初阶正是没有命名规范,并且在模板控件中绑定了数据源所以展现一直有标题。依照供给写出模板如下。

趣味就是说模板控件必须命名为“PASportageT_艾德itor”,并且模板不需求绑定数据源,对应的GridControl的列绑定数据源即可,GridControl会活动将模板嵌入展现。笔者刚最先正是从未命名规范,并且在模板控件中绑定了数额源所以显示一向不平时。依照须求写出模板如下。

澳门金沙国际 8

  <Window.Resources>
        <DataTemplate x:Key="FirstTemplate">
            <StackPanel>
                <dxe:DateEdit x:Name="PART_Editor"  Mask="yyyy-MM-dd" MaskUseAsDisplayFormat="True">
                </dxe:DateEdit>
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="SecondTemplate">
            <StackPanel>
                <dxe:TextEdit x:Name="PART_Editor"
                              MaskType="Numeric" Mask="n" MaskUseAsDisplayFormat="True" AllowNullInput="False" >
                </dxe:TextEdit>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>
  <Window.Resources>
        <DataTemplate x:Key="FirstTemplate">
            <StackPanel>
                <dxe:DateEdit x:Name="PART_Editor"  Mask="yyyy-MM-dd" MaskUseAsDisplayFormat="True">
                </dxe:DateEdit>
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="SecondTemplate">
            <StackPanel>
                <dxe:TextEdit x:Name="PART_Editor"
                              MaskType="Numeric" Mask="n" MaskUseAsDisplayFormat="True" AllowNullInput="False" >
                </dxe:TextEdit>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>

澳门金沙国际 9

再正是CellTemplateSelector须求持续DataTemplateSelector类,并且实现SelectTemplate方法根据规则重返2个您所需的Template.代码如下

同时CellTemplateSelector须要后续DataTemplateSelector类,并且达成SelectTemplate方法依照标准重临1个你所需的Template.代码如下

5:显示tabcontrol 不显示tab页头

 public  class SettingDataTemplateSelector: DataTemplateSelector
    {
        public DataTemplate FirstTemplate
        {
            get;
            set;
        }
        public DataTemplate SecondTemplate
        {
            get;
            set;
        }


        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            EditGridCellData data = (EditGridCellData)item;
            Setting setting = data.RowData.Row as Setting;
            if (setting != null)
            {

                if (setting.ControlMode == 1)
                    return element.FindResource("FirstTemplate") as DataTemplate;
                else
                    return element.FindResource("SecondTemplate") as DataTemplate;
            }
            return base.SelectTemplate(item, container);
        }
    }
 public  class SettingDataTemplateSelector: DataTemplateSelector
    {
        public DataTemplate FirstTemplate
        {
            get;
            set;
        }
        public DataTemplate SecondTemplate
        {
            get;
            set;
        }


        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            EditGridCellData data = (EditGridCellData)item;
            Setting setting = data.RowData.Row as Setting;
            if (setting != null)
            {

                if (setting.ControlMode == 1)
                    return element.FindResource("FirstTemplate") as DataTemplate;
                else
                    return element.FindResource("SecondTemplate") as DataTemplate;
            }
            return base.SelectTemplate(item, container);
        }
    }
  // xtraTabControl1.ShowTabHeader=DevExpress.Utils.DefaultBoolean.False;
 xtraTabControl1.Visible = false;

下一场前台xmal的CellTemplateSelector中引用选用器,代码如下

下一场前台xmal的CellTemplateSelector中援引采纳器,代码如下

 6: 突显行号

      <dxg:GridColumn x:Name="ControlPointDataTime" Binding="{Binding Path=ControlPoint,Mode=TwoWay}" Header="控制点" >
                    <dxg:GridColumn.CellTemplateSelector>
                        <local:SettingDataTemplateSelector
                                                             FirstTemplate="{StaticResource FirstTemplate}"
                                                             SecondTemplate="{StaticResource SecondTemplate}" />
                    </dxg:GridColumn.CellTemplateSelector>

                </dxg:GridColumn>
      <dxg:GridColumn x:Name="ControlPointDataTime" Binding="{Binding Path=ControlPoint,Mode=TwoWay}" Header="控制点" >
                    <dxg:GridColumn.CellTemplateSelector>
                        <local:SettingDataTemplateSelector
                                                             FirstTemplate="{StaticResource FirstTemplate}"
                                                             SecondTemplate="{StaticResource SecondTemplate}" />
                    </dxg:GridColumn.CellTemplateSelector>

                </dxg:GridColumn>
  this.gridView1.IndicatorWidth = 80;  //调整行号的框宽
  private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
        {
            if (e.Info.IsRowIndicator && e.RowHandle >= 0)
            {
                e.Info.DisplayText = (e.RowHandle + 1).ToString();
            }
        }
添加customdrawrowindicator 事件

骨干的供给就完了了,是否瞧着很简短。其实当你觉得简单是因为您打探了DEV的局地机制,比如模板控件的命名必须是“PA昂CoraT_艾德itor”,还有绑定的地方,任何贰个地点出错了前台运营显示都是不会顺手的,这么些时候你就会找不到消除的章程,从而达不到你想要的目标。下边包车型大巴急需实际上还有三个难题,比如:当你添加一条记下是金额控制的,此时那条记下已经添加到数据中了。假若你在界面上修修改改将下拉框选中改为时控,前面一列由于因为不能变换为时间格式,所以体现依旧不寻常。此时咋做呢,笔者想到了GridControl的CellValueChanged事件,当小编切换控制措施时,前面一列我给它清空,那样直白让用户输入不就好了。在那里自个儿也将代码贴出来。

着力的供给就到位了,是否瞅着非常的粗略。其实当你觉得简单是因为您打探了DEV的部分体制,比如模板控件的命名必须是“PAKugaT_艾德itor”,还有绑定的地点,任何三个地点出错了前台运转突显都是不会百步穿杨的,那几个时候你就会找不到化解的措施,从而达不到您想要的目标。上边包车型的士需求实际上还有一个题材,比如:当您添加一条记下是金额控制的,此时那条记下已经添加到数据中了。假设您在界面上修改将下拉框选中改为时间决定,前面一列由于因为不能够转移为时间格式,所以显得还是有毛病。此时如何是好吧,作者想开了GridControl的CellValueChanged事件,当本身切换控制方法时,前面一列作者给它清空,那样平素让用户输入不就好了。在那边小编也将代码贴出来。

 7: 不出示列头:

   private void ViewSimulate_CellValueChanged(object sender, CellValueChangedEventArgs e)
        {
            if (e.Column == ComControlMode)
            {
                ((GridControl) e.Source.DataControl).SetCellValue(e.RowHandle,ControlPointDataTime,null);
            }
        }
   private void ViewSimulate_CellValueChanged(object sender, CellValueChangedEventArgs e)
        {
            if (e.Column == ComControlMode)
            {
                ((GridControl) e.Source.DataControl).SetCellValue(e.RowHandle,ControlPointDataTime,null);
            }
        }

澳门金沙国际 10

到此,项目运作起来望着还不错,固然要求非常的粗略,但也折腾了我一段时间,现在作者会不断的写博客来记录本人碰着的坑来和豪门享受,同时也便宜本人要好查看。最终,小编将全部的demo上传供我们参考,作者用的dev的版本是15.2.4,若是您的本子和本人的区别,能够将demo中的引用删除换到自个儿的就足以了。

到此,项目运转起来望着尚可,即便必要很简短,但也折腾了自己一段时间,现在笔者会不断的写博客来记录自个儿遭逢的坑来和大家大饱眼福,同时也有益本人本身查看。最终,小编将总体的demo上传供大家参考,小编用的dev的版本是15.2.4,假使您的本子和本身的不等同,能够将demo中的引用删除换到自身的就足以了。

澳门金沙国际 11

补充:当系统时间设置如下时,前台界面将显得混乱。

补充:当系统时间设置如下时,前台界面将显得混乱。

 

澳门金沙国际 12

澳门金沙国际 13

 

前台突显如下

前台显示如下

 8:gridview 获 取某行的值 都以get起头的指令,
 行内哪行被选了光标聚焦,棕月光蓝被选,就用比如

澳门金沙国际 14

澳门金沙国际 15

  var a = gridView1.GetFocusedRow();  这几个是获得整个行的 内的数据.

当自家意识那么些题材,作者时期不曾更好的消除办法。前台模板Date艾德it的Mask、DisplayFormatString以及MaskUseAsDisplayFormat都设为True。于是自个儿向DevSupport寻求协理。DevSupport给出解释如下:

当自家发现那个难题,笔者一世没有更好的化解办法。前台模板Date艾德it的Mask、DisplayFormatString以及MaskUseAsDisplayFormat都设为True。于是本人向DevSupport寻求支持。DevSupport给出解释如下:

9: gridview 添加checkbox 选择

The cause of the issue is that date values are stored as string values. In this scenario, DXGrid posts the values in the current culture to maintain end-user input. 
DateEdit editors, however, use an invariant culture to parse string values.
To resolve this issue, you can either store the date values as DateTime or additionally convert posted values. With your current implementation,
the second approach can be implemented by setting Binding.Converter to a custom converter
The cause of the issue is that date values are stored as string values. In this scenario, DXGrid posts the values in the current culture to maintain end-user input. 
DateEdit editors, however, use an invariant culture to parse string values.
To resolve this issue, you can either store the date values as DateTime or additionally convert posted values. With your current implementation,
the second approach can be implemented by setting Binding.Converter to a custom converter

添加一列,FieldName为 “check”,将Column艾德it 设置为 复选框
样式。gridview1editable设置为true

在此,作者付诸第①种办法的兑现格局。

在此,小编付出第①种方法的实现格局。

  将要绑定的DataTable添加列 “check”,Type 为
bool。

public class ConvertDateTime : MarkupExtension, IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            DateTime date;
            if (value is string && DateTime.TryParse((string)value, out date))
                return date.ToString(CultureInfo.InvariantCulture);
            return value;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }
public class ConvertDateTime : MarkupExtension, IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            DateTime date;
            if (value is string && DateTime.TryParse((string)value, out date))
                return date.ToString(CultureInfo.InvariantCulture);
            return value;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }

  绑定DataTable到GridControl。

前台添加Convert转化绑定

前台添加Convert转化绑定

  获取: string value =
gridview.GetDataRow(i)[“check”].toString();

<dxg:GridColumn x:Name="ControlPointDataTime" Binding="{Binding Path=ControlPoint,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True,Converter={local:ConvertDateTime}}" Header="控制点" >
<dxg:GridColumn x:Name="ControlPointDataTime" Binding="{Binding Path=ControlPoint,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True,Converter={local:ConvertDateTime}}" Header="控制点" >

         value == “true” ||  “” (“false”)

到此,难题就一挥而就了。

到此,难点就缓解了。

 设置为多选

补充2:对于地点的切换控制格局时,后边一列清空的须求那里有更简明的贯彻方式,只须要将您自定义的类中的属性加上一些逻辑控制就好了,代码如下:

补充2:对此地点的切换控制方法时,后面一列清空的必要那里有更简约的兑现格局,只需求将你自定义的类中的属性加上一些逻辑控制就好了,代码如下:

   gridView1.OptionsSelection.MultiSelect = true;

   private int _ControlMode;

        public int ControlMode
        {
            get { return _ControlMode; }
            set { _ControlMode = value;
                ControlPoint = null;
            }
        }
   private int _ControlMode;

        public int ControlMode
        {
            get { return _ControlMode; }
            set { _ControlMode = value;
                ControlPoint = null;
            }
        }

   gridView1.OptionsSelection.MultiSelectMode =
DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;

 将修改后的源码重新上传。

 将修改后的源码重新上传。

 10:清空gridview 内容  
因为更新是依据数据源更新的,所以清空数据源,就吧gridview内的内容清空了.

 源码下载:

 源码下载:

11绑定数据源

  static  BindingList<T> bl = new BindingList<T>();

 

附其余博客资料

1.隐形最上边的GroupPanel:

  gridView1.OptionsView.ShowGroupPanel=false; 

2.获得当前选定记录某字段的值:

  sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString();  

3.多少只读:

  gridView1.OptionsBehavior.Editable=false;  

4.不显示MasterDetailView:

  gridView1.OptionsDetail.EnableMasterViewMode=false;  

5.修改最上边的GroupPanel内容:

   gridView1.GroupPanelText=”柳生飘絮”;  

6.设置数据源:

   gridControl1.DataSource = dt;

   绑定每一列的FiledName–属性

   对于Oracle数据库,全数的在设计器里写的主次中的字段名必须大写,否则大概绑定不上字段,sqlserver没有那几个限制.  

7.读写拷贝权限设置:

  只读不可拷贝:

    ColumnViewOptionsBehavior.Editable = False  

  只读可拷贝:

    ColumnViewOptionsBehavior.Editable = True

    OptionsColumn.AllowEdit = True

    OptionsColumn.ReadOnly = True  

  可编辑:

    ColumnViewOptionsBehavior.Editable = True

    OptionsColumn.AllowEdit = True

    OptionsColumn.ReadOnly = False  

8.模板列的设置:

  到Columns中,在她的特性中找到Column艾德it.

  以LookUpEdit为例:

  首先从Designer左侧菜单In-Place 艾德itor
Repository中添加LookUp艾德it.取名为Re1.然后.在她的Columns属性中丰盛3列.Caption依次为:编号,姓名,性别.FieldName依次为:FID,FNAME,FSEX.然后将Re1的NullText设置成空.

  AutoSearchColumnIndex属性设置为2.ImmediatePopup属性设置为True.

  SearchMode设置为OnlyInPopup.

  然后将那一个模板列附加到大家地方提到的列1(也正是将列1的Column艾德it属性设成Re1)

  最终咱们还要在代码里面给Re1绑定数据源和展现项.

         Re1.DataSource = DALUse.Query(“select fid,fname,fsex from
dual”).Tables[0];

         Re1.DisplayMember = “FSEX”;

         Re1.ValueMember = “FNAME”;  

9.设某一列文字和标题局中体现:

   gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment =
DevExpress.Utils.HorzAlignment.Center;

   gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment =
DevExpress.Utils.HorzAlignment.Center;   

10.去掉某一列上边的电动筛选效能(Filter):                  

   gridView1.Columns[0].OptionsFilter.AllowAutoFilter = false;

   gridView1.Columns[0].OptionsFilter.AllowFilter =
false;                

   gridView1.Columns[0].OptionsFilter.ImmediateUpdateAutoFilter =
false;   

11.设置冻结列(左冻结):

  gridView1.Columns[0].Fixed=
DevExpress.XtraGrid.Columns.FixedStyle.Left;   

12.拿走单元格数据(0行0列):

   string ss=gridView1.GetRowCellDisplayText(0, gridView1.Columns[0]);

   string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);   

13.装置单元格数据(将0行0列的单元格赋值123):

   gridView1.SetRowCellValue(0, gridView1.Columns[0], “123”);   

13.手动添加dev的列:

  DevExpress.XtraGrid.Columns.GridColumn Col1=new
DevExpress.XtraGrid.Columns.GridColumn ();

  Col1.FieldName=”FID”;

  Col1.Visible=true;

  Col1.VisibleIndex=gridView1.Columns.Count;

  gridView1.Columns.Add(Col1);  

相关文章