[2018年最新整理]信息系统开发平台OpenExpressApp-支持勾选视图.docxVIP

  • 2
  • 0
  • 约5.75千字
  • 约 10页
  • 2018-04-14 发布于浙江
  • 举报

[2018年最新整理]信息系统开发平台OpenExpressApp-支持勾选视图.docx

[2018年最新整理]信息系统开发平台OpenExpressApp-支持勾选视图

信息系统开发平台OpenExpressApp-支持勾选视图在/zhoujg/archive/2009/10/12/1582009.htmlOpenExpressApp中/zhoujg/archive/2009/12/12/1622331.html部门+岗位=角色,功能权限属于角色的,所以功能权限也放在部门模块中设置了,后期将会单独对权限部门进行介绍,本篇讲解一下在功能权限实现中使用到的一种新的内置视图样式,我把它叫做勾选视图。之前的列表视图 OEA的所有Command都有一个Guid,角色下功能权限下存储的实际上是不能使用的功能的Guid,如果按照以往来实现,界面如下: 界面左边为模块,右边为分组的对象功能列表,这时可以通过设计一个【选择】功能,弹出一个对话框,对话框显示所有模块的所有对象功能列表,然后通过选择后加入细表。虽然这样可以很方便的使用以前框架的功能来实现,但是用户使用起来会很不方便。这种方式,勾选一个功能需要需要点击弹出对话框,然后选择一些内容,然后关闭。而系统模块功能可能很多,这样操作就会让用户点击按钮多次。  新增的勾选视图 勾选视图界面显示如上图所示,右边把原来弹出的对话框内容显示在这里,前面加了一个checkbox框提供选择,通过勾选操作来实现以往的选择功能。现在用户新增或者去除一个功能,只需要勾选一次就可以解决,而以往操作需要3个步骤。 之前项目任务中就遇到过类似操作,当时就想实现一个通用视图来提高易用性,不过由于时间原因没有做,直到今天才完成。下面介绍一下勾选视图的主要实现和使用。为了下面讲解时对数据说明清楚,定义一下两个术语: 源数据:勾选的列表,相当于以前弹出选择框的数据 目的数据:操作的对象列表,通过勾选操作影响到的实际对象实现要求由于这只是操作样式不一样,所以我不希望在以前的业务对象类库里加入这部分功能?,这部分功能与类库隔离开来把这个功能抽象为一中通用的样式视图,通过一些属性设置和约定来实现延用以前框架代码,在之前框架代码上扩展框架内部实现UI勾选列表是一个列表视图,所以可以重用以前的ListObjectView,只是需要增加一个checkbox列。现在实现为通过附加属性来实现 public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.RegisterAttached(IsChecked, typeof(bool), typeof(SelectedDataAttached), new FrameworkPropertyMetadata(new PropertyChangedCallback(OnIsCheckedChanged))); /// summary /// Handles changes to the IsChecked property. /// /summary private static void OnIsCheckedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is DataGrid) { DataGrid grid = d as DataGrid; if ((bool)e.NewValue) { DataGridCheckBoxColumn column = new DataGridCheckBoxColumn() { Header = 选择 }; column.Binding = new Binding(PropertyConvention.IsSelected); grid.Columns.Insert(0, column); } else { if ((grid.Columns[0] is DataGridCheckBoxColumn) ((string)grid.Columns[0].Header == 选择)) grid.Columns.RemoveAt(0); } } }数据以前UI显示的数据是父对象的子对象列表属性(目的数据),现在需要显示为源数据,则需要修改LoadData, /// summary /// 装载数据,考虑(AssociationOperateType.Selected /// /summary public override void LoadData() { base.LoadData(); if ((AllowLoadData) (AssociationOperateType.Selected == BOsPropInfo.AssociationAttribute.AssociationOperateType)) { Late

文档评论(0)

1亿VIP精品文档

相关文档