一个不易使用DevExpress

By admin in 美高梅手机版4858 on 2019年3月3日

说明

WPF DEV CellTemplateSelector(2个不错选拔DevExpress CellTemplateSelector的德姆o),wpfdevexpress

说明

笔者在类型中依据供给须求用到WPF Dev
CellTemplateSelector时,蒙受重重坑。曾一度想要舍弃使用模板转换器,但又心有不甘,终于在不停大力下,达到了急需的渴求。所以写下去和我们大快朵颐。若是有雷同质疑的人,能够少走些弯路。小编第叁次写博客,文笔不佳,还请见谅。

需求

美高梅手机版4858 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.

情趣正是模板控件必须命名为“PALacrosseT_艾德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>

美高梅手机版4858,并且CellTemplateSelector供给继续DataTemplateSelector类,并且实现SelectTemplate方法依据条件再次来到八个您所需的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的局地机制,比如模板控件的命名必须是“PA福特ExplorerT_艾德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中的引用删除换来自个儿的就足以了。

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

美高梅手机版4858 2

前台显示如下

美高梅手机版4858 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

在此,小编付诸第1种方法的完结形式。

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….. 

美高梅手机版4858 4

美高梅手机版4858 5

美高梅手机版4858 6

 

 

ShowGroupPanel = False

必要很不难,选拔格局下拉框选中时控措施只怕价格控制格局,前边的控制点单元格对应呈现日期控件或文本控件。

急需很简单,选择格局下拉框选中时间决定措施或许价格控制格局,前边的控制点单元格对应显示日期控件或文本控件。

 tabcontrol 设置:

思路

思路

美高梅手机版4858 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页头

情趣正是说模板控件必须命名为“PA智跑T_Editor”,并且模板不须求绑定数据源,对应的GridControl的列绑定数据源即可,GridControl会活动将模板嵌入体现。我刚开始便是从未命名规范,并且在模板控件中绑定了数据源所以展现一贯有标题。根据供给写出模板如下。

一个不易使用DevExpress。情趣便是模板控件必须命名为“PARubiconT_艾德itor”,并且模板不要求绑定数据源,对应的GridControl的列绑定数据源即可,GridControl会活动将模板嵌入呈现。作者刚初阶正是从未命名规范,并且在模板控件中绑定了多少源所以突显平昔至极。遵照须要写出模板如下。

美高梅手机版4858 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>

美高梅手机版4858 9

而且CellTemplateSelector需求持续DataTemplateSelector类,并且达成SelectTemplate方法遵照标准重回3个您所需的Template.代码如下

再者CellTemplateSelector要求持续DataTemplateSelector类,并且完成SelectTemplate方法依照条件重回二个你所需的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奥迪Q3T_艾德itor”,还有绑定的地方,任何多个地点出错了前台运转展现都以不会八面驶风的,那么些时候你就会找不到化解的主意,从而达不到您想要的指标。下边包车型大巴需要实际上还有1个标题,比如:当你添加一条记下是金额控制的,此时那条记下已经添加到数据中了。若是你在界面上改动将下拉框选中改为时控,后边一列由于因为无法转移为时间格式,所以显示还是卓殊。此时如何是好呢,我想开了GridControl的CellValueChanged事件,当自家切换控制形式时,前边一列小编给它清空,那样直接让用户输入不就好了。在此间小编也将代码贴出来。

主干的必要就做到了,是或不是瞅着相当的粗略。其实当您认为不难是因为你询问了DEV的局部机制,比如模板控件的命名必须是“PAXC60T_艾德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);
            }
        }

美高梅手机版4858 10

到此,项目运作起来瞧着尚可,即使供给很简单,但也折腾了自己一段时间,以往作者会不断的写博客来记录本人遇见的坑来和大家大快朵颐,同时也惠及本身要好查看。最终,作者将完整的demo上传供大家参考,作者用的dev的版本是15.2.4,假使你的版本和作者的不相同,能够将demo中的引用删除换来本人的就能够了。

到此,项目周转起来望着尚可,尽管供给不会细小略,但也折腾了自小编一段时间,以后小编会不断的写博客来记录自身遇上的坑来和豪门分享,同时也有益于小编本人查看。最终,笔者将完整的demo上传供大家参考,作者用的dev的本子是15.2.4,假设你的版本和自个儿的分歧,能够将demo中的引用删除换到本身的就能够了。

美高梅手机版4858 11

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

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

 

美高梅手机版4858 12

美高梅手机版4858 13

 

前台呈现如下

前台展现如下

 8:gridview 获 取某行的值 都以get开首的指令,
 行内哪行被选了光标聚焦,淡紫酱色被选,就用比如

美高梅手机版4858 14

美高梅手机版4858 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

在此,小编付出第两种方法的完毕格局。

在此,作者付诸第3种格局的落到实处格局。

  将要绑定的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 Editor
Repository中添加LookUp艾德it.取名为Re1.然后.在他的Columns属性中加上3列.Caption相继为:编号,姓名,性别.FieldName依次为:FID,FNAME,FSEX.然后将Re1的NullText设置成空.

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

  SearchMode设置为OnlyInPopup.

  然后将以此模板列附加到大家地点提到的列1(也正是将列1的ColumnEdit属性设成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);  

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有