OSharp是什么?

  OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现。与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现。依赖注入、ORM、对象映射、日志、缓存等等功能,都只定义了一套最基础最通用的抽象封装,提供了一套统一的API、约定与规则,并定义了部分执行流程,主要是让项目在一定的规范下进行开发。所有的功能实现端,都是通过现有的成熟的第三方组件来实现的,除了EntityFramework之外,所有的第三方实现都可以轻松的替换成另一种第三方实现,OSharp框架正是要起隔离作用,保证这种变更不会对业务代码造成影响,使用统一的API来进行业务实现,解除与第三方实现的耦合,保持业务代码的规范与稳定。

本文已同步到系列目录:OSharp快速开发框架解说系列

   接上篇,前面我们已经定义了一个 datagrid父视图 _DataGridLayout.cshtml,实现一个表格是相当的容易。但是,实际业务中,并非所有的数据列表并非只是单一的datagrid列表,还可能需要把datagrid与其他组件配合使用,比如角色信息是来源于各个组织机构的,就需要增加一个组织机构的分类,来更好的管理各种角色。最终效果图如下:
  【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作

  来分析一下这个页面,不难看出,需要将选项卡Tab的内容页拆分成另外一个由左+内容的 easyui-layout 构成的布局页,左部分是组织机构的树型导航栏,右边是相应的角色列表。

  我们先来分析一下前后的html变化,只有一个datagrid的时候,html很简单,只有一行:

1 <div id="grid-roles"></div>

  要满足上面的需求,html变成了:

1 <div id="layout-roles" class="easyui-layout" data-options="fit:true">
2     <div data-options="region:'west', split:true, minWidth:80, width:150, title:'组织机构'">
3         <ul id="tree-organizations" class="easyui-tree"></ul>
4     </div>
5     <div data-options="region:'center', border:false">
6         <div id="grid-roles"></div>    
7     </div>
8 </div>

  这个而已,原先的 _DataGridLayout.cshtml 还能胜任吗?答案是肯定的,因为我们已经预先做好了准备,_DataGridLayout.cshtml 中有如下定义:

  【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作

  只需要把 #grid-roles 前后的代码分别回到 headHtml 与 footHtml 两个Section中,就能满足需求,在Views\Roles\Index.cshtml中添加如下代码:

  【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作

  注意,在html已经被拆分成了两部分,单一部分肯定是不闭合的,会处于报错状态,但一定要保证组合起来之后是闭合的,才能生成正确的 html。

  当然,还要按需要添加处理新添加的 easyui-layout 和 easyui-tree 的 javascript 代码,这就要用到 _DataGridLayout.cshtml 中定义的 startfunction() 与 endfunction() 两个方法了,要添加的代码也很简单,只要选择组织机构的树节点的时候变更datagrid的URL即可:

  【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作

   综合之后,角色列表视图的代码组织如下:

 1 @{
 2     ViewBag.Title = "角色信息列表";
 3     Layout = "~/Areas/Admin/Views/Shared/_DataGridLayout.cshtml";
 4 
 5     ViewBag.GridId = "roles";
 6     ViewBag.GridDataUrl = Url.Action("GridData");
 7     ViewBag.NodeDataUrl = Url.Action("NodeData", "Organizations");
 8 }
 9 @section customScript
10 {
11     <script type="text/javascript">
12         columns = [[
13             { field: "Id", title: "编号", width: 40, halign: "center", align: "right", sortable: true },
14             { field: "Name", title: "角色名", width: 150, sortable: true },
15             { field: "Remark", title: "角色描述", width: 150, sortable: true },
16             { field: "CreatedTime", title: "创建时间", width: 150, halign: "center", align: "center", sortable: true, formatter: function (value) { return $.osharp.tools.formatDate(value); } }
17         ]];
18 
19         endfunction = function () {
20             var $tree = $("#tree-@ViewBag.TreeId");
21             $tree.tree({
22                 url: "@ViewBag.NodeDataUrl",
23                 onSelect:function(node) {
24                     grid.datagrid({
25                         url: "@ViewBag.GridDataUrl/" + node.id
26                     });
27                 }
28             });
29         };
30     </script>
31 }
32 @section headHtml
33 {
34     <div >
35         <div data-options="region:'west', split:true, minWidth:80, width:150, title:'组织机构'">
36             <ul ></ul>
37         </div>
38         <div data-options="region:'center', border:false">
39 }
40 @section footHtml
41 {
42         </div>
43     </div>
44 }
View Code

相关文章:

  • 2021-12-26
  • 2022-02-07
  • 2022-12-23
  • 2021-08-17
  • 2021-05-25
  • 2021-12-19
猜你喜欢
  • 2021-10-26
  • 2021-07-25
  • 2022-01-31
  • 2021-09-19
  • 2021-10-27
  • 2021-12-02
相关资源
相似解决方案