<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用Jquery+EasyUI 進(jìn)行框架項(xiàng)目開發(fā)案例講解之四---組織機(jī)構(gòu)管理源碼分享

      使用Jquery+EasyUI 進(jìn)行框架項(xiàng)目開發(fā)案例講解之四

      組織機(jī)構(gòu)管理源碼分享 

          在上三篇文章

         《使用Jquery+EasyUI進(jìn)行框架項(xiàng)目開發(fā)案例講解之一---員工管理源碼分享》 

        《使用Jquery+EasyUI 進(jìn)行框架項(xiàng)目開發(fā)案例講解之二---用戶管理源碼分享》

        《使用Jquery+EasyUI 進(jìn)行框架項(xiàng)目開發(fā)案例講解之三---角色管理源碼分享》

        我們分享了使用Jquery EasyUI來進(jìn)行ASP.NET項(xiàng)目的開發(fā)的相關(guān)方法,每一個(gè)模塊都有其共用性,細(xì)細(xì)理解與掌握,我相信使用EasyUI進(jìn)行開發(fā)還是相當(dāng)方便的。

        接下來我分享“組織機(jī)構(gòu)管理”模塊主要的核心代碼組織機(jī)構(gòu)管理使用的EasyUI控件,主要是EasyUI的TreeGrid控件,組織機(jī)構(gòu)管理主界面如下圖所示:

        

        在進(jìn)行代碼講解之前,我們先來回顧一個(gè)TreeGrid相關(guān)的知識。easyUI TreeGrid 從$.fn.datagrid.defaults繼承,覆蓋默認(rèn)值$.fn.treegrid.defaults。treegrid 是使用顯示分層數(shù)據(jù)在grid中,treegrid 是基于datagrid和關(guān)聯(lián)treeview 和關(guān)聯(lián)可編輯的grid,treegrid 允許你創(chuàng)建定制的,異步加載展開行數(shù)據(jù),和顯示分層的數(shù)據(jù)在多列中。如下圖所示:

        使用示例

        通過html標(biāo)記創(chuàng)建treegrid ,大多數(shù)情況下treegrid 遵循相同的結(jié)構(gòu)格式化為datagrid
      <table id="tt" class="easyui-treegrid" style="width:600px;height:400px"  
              data-options="url:'get_data.aspx',idField:'id',treeField:'name'">  
          <thead>  
              <tr>  
                  <th data-options="field:'name',width:180">Task Name</th>  
                  <th data-options="field:'persons',width:60,align:'right'">Persons</th>  
                  <th data-options="field:'begin',width:80">Begin Date</th>  
                  <th data-options="field:'end',width:80">End Date</th>  
              </tr>  
          </thead>  
      </table> 
        使用javascript創(chuàng)建treegrid 
      <table id="tt" style="width:600px;height:400px"></table>  
      
      $('#tt').treegrid({  
          url:'get_data.aspx',  
          idField:'id',  
          treeField:'name',  
          columns:[[  
              {title:'Task Name',field:'name',width:180},  
              {field:'persons',title:'Persons',width:60,align:'right'},  
              {field:'begin',title:'Begin Date',width:80},  
              {field:'end',title:'End Date',width:80}  
          ]]  
      }); 
        屬性

        屬性從 datagrid繼承,以下是treegrid新增的屬性.

      NameTypeDescriptionDefault
      idField string 定義鍵字段標(biāo)識一個(gè)tree節(jié)點(diǎn),該項(xiàng)是必須的. null
      treeField string 定義tree節(jié)點(diǎn)字段,該項(xiàng)是必須的. null
      animate boolean 定義當(dāng)節(jié)點(diǎn)展開/關(guān)閉的時(shí)候,是否顯示動畫效果. false
      loader function(param,success,error) 定義如何從遠(yuǎn)程服務(wù)器端加載數(shù)據(jù). 返回false將終止這個(gè)動作. 這個(gè)函數(shù)提供一下參數(shù) :
      param: 傳遞給遠(yuǎn)程服務(wù)器的參數(shù)對象.
      success(data): 當(dāng)檢索數(shù)據(jù)成功之后執(zhí)行的回調(diào)函數(shù).
      error(): 當(dāng)檢索數(shù)據(jù)失敗的時(shí)候調(diào)用的回調(diào)函數(shù).
      json loader
      loadFilter function(data,parentId) 返回過濾后的顯示數(shù)據(jù).  

         事件

        事件從datagrid繼承, 以下是datagrid新增事件.

      NameParametersDescription
      onClickRow row 當(dāng)用戶點(diǎn)擊一個(gè)節(jié)點(diǎn)時(shí)觸發(fā).
      onDblClickRow row 當(dāng)用戶雙擊一個(gè)節(jié)點(diǎn)時(shí)觸發(fā).
      onClickCell field,row 當(dāng)用戶點(diǎn)擊一個(gè)表格的時(shí)觸發(fā).
      onDblClickCell field,row 當(dāng)用戶雙擊一個(gè)表格的時(shí)觸發(fā).
      onBeforeLoad row, param 一個(gè)請求去加載數(shù)據(jù)之前觸發(fā), 返回false將取消加載動作.
      onLoadSuccess row, data 數(shù)據(jù)加載成功之后觸發(fā).
      onLoadError arguments 數(shù)據(jù)加載失敗之后觸發(fā),arguments 參數(shù)和jQuery.ajax的error函數(shù)一樣.
      onBeforeExpand row 節(jié)點(diǎn)展開之前觸發(fā),返回false將取消展開動作.
      onExpand row 節(jié)點(diǎn)展開后觸發(fā).
      onBeforeCollapse row 節(jié)點(diǎn)折疊之前觸發(fā),返回false取消折疊動作.
      onCollapse row 節(jié)點(diǎn)折疊后觸發(fā).
      onContextMenu e, row 在節(jié)點(diǎn)上右鍵點(diǎn)擊觸發(fā).
      onBeforeEdit row 用戶開始編輯一個(gè)節(jié)點(diǎn)時(shí)觸發(fā).
      onAfterEdit row,changes 用戶結(jié)束編輯節(jié)點(diǎn)時(shí)觸發(fā).
      onCancelEdit row 用戶取消編輯節(jié)點(diǎn)時(shí)觸發(fā).

         方法  

        許多方法提供一個(gè)參數(shù),參數(shù)名為id, 這個(gè)參數(shù)指明tree節(jié)點(diǎn)值.

      NameParameterDescription
      options none 返回treegrid的 options對象.
      resize options 設(shè)置treegrid 大小,options包含兩個(gè)屬性:
      width: treegrid新的寬度.
      height: treegrid新的高度.
      fixRowHeight id 固定特定行高度.
      loadData data 加載 treegrid 數(shù)據(jù).
      reload id 重新加載treegrid 數(shù)據(jù).如果傳遞了id參數(shù), 重新加載特定的tree行, 其他的重新加載所有tree行.

      示例代碼:

      $('#tt').treegrid('reload', 2);	// 重新加載指定id值是2的行
      $('#tt').treegrid('reload');	// 重新加載所有行
      
      reloadFooter footer 重新加載頁腳數(shù)據(jù).
      getData none 得到加載數(shù)據(jù).
      getFooterRows none 得到頁腳數(shù)據(jù).
      getRoot none 得到根節(jié)點(diǎn), 返回的是節(jié)點(diǎn)對象
      getRoots none 得到根節(jié)點(diǎn), 返回的是節(jié)點(diǎn)數(shù)組.
      getParent id 得到父節(jié)點(diǎn).
      getChildren id 得到子節(jié)點(diǎn).
      getSelected none 得到選中節(jié)點(diǎn)并返回它, 如果沒有選中節(jié)點(diǎn)返回null.
      getSelections none 得到所有的選中節(jié)點(diǎn).
      getLevel id 得到特定的節(jié)點(diǎn)的層級.
      find id 查找特定的節(jié)點(diǎn)和返回節(jié)點(diǎn)數(shù)據(jù).
      select id 選中一個(gè)節(jié)點(diǎn).
      unselect id 取消選中一個(gè)節(jié)點(diǎn).
      selectAll none 選中所有節(jié)點(diǎn).
      unselectAll none 取消選中所有節(jié)點(diǎn).
      collapse id 折疊一個(gè)節(jié)點(diǎn).
      expand id 展開一個(gè)節(jié)點(diǎn).
      collapseAll id 折疊所有節(jié)點(diǎn).
      expandAll id 展開所有節(jié)點(diǎn).
      expandTo id 展開從根節(jié)點(diǎn)到指定的節(jié)點(diǎn).
      toggle id 切換節(jié)點(diǎn)的 expanded(展開)/collapsed (關(guān)閉)狀態(tài).
      append param 附加一個(gè)節(jié)點(diǎn)到父節(jié)點(diǎn). 'param' 參數(shù)包含以下屬性:
      parent:父節(jié)點(diǎn)id , 如果沒有分配, 附加作為根節(jié)點(diǎn).
      data: 數(shù)組, 節(jié)點(diǎn)數(shù)據(jù).
      示例代碼:
      // 添加一些節(jié)點(diǎn)到選中節(jié)點(diǎn)
      var node = $('#tt').treegrid('getSelected');
      $('#tt').treegrid('append',{
      	parent: node.id,  // 節(jié)點(diǎn)有一個(gè)'id'值,定義是通過'idField'屬性
      	data: [{
      		id: '073',
      		name: 'name73'
      	}]
      });
      
      remove id 移除一個(gè)節(jié)點(diǎn)和其子節(jié)點(diǎn).
      refresh id 刷新特定的節(jié)點(diǎn).
      beginEdit id 開始編輯一個(gè)節(jié)點(diǎn).
      endEdit id 結(jié)束編輯一個(gè)節(jié)點(diǎn).
      cancelEdit id 取消編輯一個(gè)節(jié)點(diǎn).
      getEditors id 得到特定行編輯器.每一個(gè)編輯器都有以下屬性:
      actions:編輯器可以做的動作.
      target: 目標(biāo)編輯器jQuery對象.
      field:字段名.
      type:編輯器類型.
      getEditor options 得到特定的編輯器, options 包含兩個(gè)屬性:
      id:行節(jié)點(diǎn)id.
      field: 字段名.

         以上知識對于充分理解并應(yīng)用TreeGrid非常的重要,對于不明白的童鞋可以看下!下面分享如何使用EasyUI的TreeGrid控件進(jìn)行我們的組織機(jī)構(gòu)管理的開發(fā),當(dāng)然還涉及到其他的知識點(diǎn),在前面的文章已有介紹,不明白的可以看下前面的文章,這兒重在說明一些方法,當(dāng)然大家也可交流討論,提出你們在開發(fā)過程中使用的常用方式方法。

        一、“組織機(jī)構(gòu)管理”主界面UI的ASPX代碼如下: 

      <%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="OrganizeAdmin.aspx.cs" Inherits="RDIFramework.WebApp.Modules.OrganizeAdmin" %>
      <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
      </asp:Content>
      <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">      
           <div id="toolbar">
              <%=base.BuildToolBarButtons()%>
          </div>
          <table id="organizeGrid"></table> 
          <script type="text/javascript" src="../Scripts/Business/OrganizeAdmin.js?v=5"></script>   
      
      </asp:Content> 

        可以看到,代碼非常的簡潔,使用EasyUI開發(fā)的好處就在于此,不需要你拖動服務(wù)端的控件等這種常規(guī)的Asp.NET開發(fā)方式,對于這種開發(fā)方式的好處不言而喻。

        綁定當(dāng)前登錄用戶所擁有的功能按鈕列表代碼如下: 

           /// <summary>
              /// 獲得頁面的權(quán)限
              /// </summary>
              private void GetPermission()
              {
                  this.permissionAdd = this.IsAuthorized("OrganizeManagement.Add");
                  this.permissionEdit = this.IsAuthorized("OrganizeManagement.Edit");
                  this.permissionMove = this.IsAuthorized("OrganizeManagement.Move");
                  this.permissionDelete = this.IsAuthorized("OrganizeManagement.Delete");
                  this.permissionExport = this.IsAuthorized("OrganizeManagement.Export");
                  //this.permissionAccredit = this.IsAuthorized("UserManagement.Accredit");
                  this.permissionUserOrganizePermission = this.IsAuthorized("OrganizeManagement.UserOrganizePermission");
                  this.permissionRolerOrganizePermission = this.IsAuthorized("OrganizeManagement.RolerOrganizePermission");
              }
      
              /// <summary>
              /// 加載工具欄
              /// </summary>
              /// <returns>工具欄HTML</returns>
              public override string BuildToolBarButtons()
              {
                  StringBuilder sb = new StringBuilder();
                  string linkbtn_template = "<a id=\"btn{0}\" class=\"easyui-linkbutton\" style=\"float:left\"  plain=\"true\" href=\"javascript:;\" icon=\"{1}\"  {2} title=\"{3}\">{4}</a>";
                  sb.Append("<a id=\"a_refresh\" class=\"easyui-linkbutton\" style=\"float:left\"  plain=\"true\" href=\"javascript:;\" icon=\"icon-reload\"  title=\"重新加載\">刷新</a> ");
                  sb.Append("<div class='datagrid-btn-separator'></div> ");
                  sb.Append(string.Format(linkbtn_template, "Add", "icon-add", permissionAdd ? "" : "disabled=\"True\"", "新增組織機(jī)構(gòu)", "新增"));
                  sb.Append(string.Format(linkbtn_template, "Edit", "icon-edit", permissionEdit ? "" : "disabled=\"True\"", "修改選中的組織機(jī)構(gòu)", "修改"));                      
                  sb.Append(string.Format(linkbtn_template, "Delete", "icon-delete0", permissionDelete ? "" : "disabled=\"True\"", "刪除選中組織機(jī)構(gòu)", "刪除"));
                  sb.Append("<div class='datagrid-btn-separator'></div> ");
                  sb.Append(string.Format(linkbtn_template, "MoveTo", "icon-shape_move_forwards", permissionMove ? "" : "disabled=\"True\"", "移動選中的組織機(jī)構(gòu)", "移動"));
                  sb.Append(string.Format(linkbtn_template, "Export", "icon-export", permissionExport ? "" : "disabled=\"True\"", "導(dǎo)出組織機(jī)構(gòu)數(shù)據(jù)", "導(dǎo)出"));
                  sb.Append("<div class='datagrid-btn-separator'></div> ");
                  sb.Append(string.Format(linkbtn_template, "UserOrganizePermission", "icon-layout_key", permissionUserOrganizePermission ? "" : "disabled=\"True\"", "設(shè)置用戶組織機(jī)構(gòu)權(quán)限", "用戶組織機(jī)構(gòu)權(quán)限"));
                  sb.Append(string.Format(linkbtn_template, "RoleOrganizePermission", "icon-ruby_key", permissionRolerOrganizePermission ? "" : "disabled=\"True\"", "設(shè)置角色組織機(jī)構(gòu)權(quán)限", "角色組織機(jī)構(gòu)權(quán)限"));
                  return sb.ToString();
              }

        綁定TreeGridJS代碼如下: 

      $(function () {
          autoResize({ dataGrid: '#organizeGrid', gridType: 'treegrid', callback: mygrid.bindGrid, height: 5 });
          $('#btnAdd').click(OrganizeAdminMethod.AddOrganize); //新增組織機(jī)構(gòu)
          $('#btnEdit').click(OrganizeAdminMethod.EditOrganize); //修改組織機(jī)構(gòu)
          $('#btnDelete').click(OrganizeAdminMethod.DeleteOrganize); //刪除組織機(jī)構(gòu)
          $('#btnMoveTo').click(OrganizeAdminMethod.MoveTo); //移動組織機(jī)構(gòu)
          $('#btnExport').click(OrganizeAdminMethod.ExportOrganize); //導(dǎo)出組織機(jī)構(gòu)數(shù)據(jù)
          $('#btnUserOrganizePermission').click(OrganizeAdminMethod.SetUserOrganizePermission); //設(shè)置用戶組織機(jī)構(gòu)權(quán)限
          $('#btnRoleOrganizePermission').click(OrganizeAdminMethod.SetRoleOrganizePermission); //設(shè)置角色組織機(jī)構(gòu)權(quán)限
          $('#a_refresh').click(function () { //刷新
              mygrid.reload();
          });
      });
      
      var mygrid = {
          bindGrid: function (winsize) {       
              navgrid = $('#organizeGrid').treegrid({
                  toolbar: '#toolbar',
                  title: '組織機(jī)構(gòu)列表',
                  iconCls: 'icon icon-org',
                  width: winsize.width,
                  height: winsize.height,            
                  nowrap: true,
                  rownumbers: true,
                  animate: true,
                  resizable: true,
                  collapsible: false,
                  url: actionUrl,
                  idField: 'Id',
                  treeField: 'FullName',
                  frozenColumns: [[
                      { title: '組織機(jī)構(gòu)名稱', field: 'FullName', width: 200 },
                      { title: '編碼', field: 'Code', width: 100 }
                  ]],
                  columns: [[
                      { title: '簡稱', field: 'ShortName', width: 120 },                      
                      { title: '主負(fù)責(zé)人', field: 'Manager', width: 70, align: 'center' },
                      { title: '電話', field: 'OuterPhone', width: 100, align: 'center' },
                      { title: '傳真', field: 'Fax', width: 100, align: 'center' },
                      { title: '有效', field: 'Enabled', width: 50, align: 'center', formatter: imgcheckbox },
                      { title: '排序', field: 'SortCode', width: 80, align: 'center' },
                      { title: '備注', field: 'Description', width: 300 },
                      { title: 'ParentId', field: 'ParentId', hidden: true },
                      { title: 'Category', field: 'Category', hidden: true },
                      { title: 'InnerPhone', field: 'InnerPhone', hidden: true },
                      { title: 'Postalcode', field: 'Postalcode', hidden: true },
                      { title: 'Address', field: 'Address', hidden: true },
                      { title: 'Web', field: 'Web', hidden: true },
                      { title: 'AssistantManager', field: 'AssistantManager', hidden: true },
                      { title: 'IsInnerOrganize', field: 'IsInnerOrganize', hidden: true }
                  ]]
              });
          },
          reload: function () {
              navgrid.treegrid('reload');
          },
          selected: function () {
              return navgrid.treegrid('getSelected');
          }
      }
      
      var imgcheckbox = function (cellvalue, options, rowObject) {
          return cellvalue ? '<img src="/css/icon/ok.png" alt="正常" title="正常" />' : '<img src="/css/icon/stop.png" alt="禁用" title="禁用" />';
      } 

        添加組織機(jī)構(gòu)界面窗口如下: 

        

        在添加組織機(jī)構(gòu)界面,主負(fù)責(zé)人,副主管數(shù)據(jù)域的綁定控件使用的是“ComboGrid"控件,綁定的代碼如下: 

      bindComboGrid: function () {
              top.$('#txt_Manager,#txt_AssistantManager').combogrid({
                  panelWidth: 320,
                  idField: 'Id',
                  textField: 'RealName',
                  url: 'Modules/handler/UserAdminHandler.ashx?action=GetUserListByPage',
                  sortName: 'SortCode',
                  sortOrder: 'asc',
                  fitColumns: true,
                  showPageList: false,
                  striped: true,
                  pagination: true,
                  rownumbers: true,
                  fitColumns: true,
                  pageSize: 10,
                  pageList: [10, 20, 30, 50],
                  method: 'post',
                  columns: [[
                      { title: '登錄名', field: 'UserName', width: 60, sortable: true },
                      { title: '用戶名', field: 'RealName', width: 70 }
                  ]]
              }); 

        修改組織機(jī)構(gòu)界面如下: 

        

        ”修改組織機(jī)構(gòu)“代碼如下: 

      EditOrganize: function () { //修改組織機(jī)構(gòu)
              if ($(this).linkbutton('options').disabled == true) {
                  return;
              }
              //功能代碼邏輯...
              var row = mygrid.selected();
              if (row) {
                  var editDailog = top.$.hDialog({
                      href: formUrl, title: '修改組織機(jī)構(gòu)', iconCls: 'icon-edit', width: 750, height: 520,
                      onLoad: function () {
                          pubMethod.bindCtrl(row.Id);
                          pubMethod.bindCategory();
                          pubMethod.bindComboGrid();
                          top.$('#txt_Code').val(row.Code);
                          top.$('#txt_FullName').val(row.FullName);
                          top.$('#txt_ShortName').val(row.ShortName);
                          top.$('#txt_ParentId').combotree('setValue', row.ParentId);
                          top.$('#txt_Category').combobox('setValue', row.Category);
                          top.$('#txt_Manager').combogrid('setValue', row.Manager);
                          top.$('#txt_AssistantManager').combogrid('setValue', row.AssistantManager);
                          top.$('#txt_OuterPhone').val(row.OuterPhone);
                          top.$('#txt_InnerPhone').val(row.InnerPhone);
                          top.$('#txt_Fax').val(row.Fax);
                          top.$('#txt_Postalcode').val(row.Postalcode);
                          top.$('#txt_Web').val(row.Web);
                          top.$('#txt_Address').val(row.Address);
                          top.$('#chk_Enabled').attr('checked', row.Enabled == "1");
                          top.$('#chk_IsInnerOrganize').attr('checked', row.IsInnerOrganize == "1");
                          top.$('#txt_Description').val(row.Description);
                      },
                      submit: function () {
                          if (top.$('#uiform').validate().form()) {
                              
                              //保存時(shí)判斷當(dāng)前節(jié)點(diǎn)所選的父節(jié)點(diǎn),不能為當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn),這樣就亂套了....
                              var treeParentId = top.$('#txt_ParentId').combotree('tree'); // 得到樹對象
                              var node = treeParentId.tree('getSelected');
                              if (node) {                            
                                  var nodeParentId = treeParentId.tree('find', row.Id);
                                  var children = treeParentId.tree('getChildren', nodeParentId.target);
                                  var nodeIds = '';
                                  var isFind = 'false';
                                  for (var index = 0; index < children.length; index++) {
                                      if (children[index].id == node.id) {
                                          isFind = 'true';
                                          break;
                                      }
                                  }
      
                                  if (isFind == 'true') {
                                      top.$.messager.alert('溫馨提示', '請選擇父節(jié)點(diǎn)元素!', 'warning');
                                      return;
                                  }
                              }
      
      
                              var vparentid = top.$('#txt_ParentId').combobox('getValue');
                              var vcategory = top.$('#txt_Category').combobox('getValue');
                              var vmanager = top.$('#txt_Manager').combogrid('getText');
                              var vassistantmanager = top.$('#txt_AssistantManager').combogrid('getText');
                              var query = 'action=EditOrganize&vparentid=' + vparentid + '&vcategory=' + vcategory + '&KeyId=' + row.Id + '&vmanager=' + vmanager + '&vassistantmanager=' + vassistantmanager + '&'
                                        + top.$('#uiform').serialize();
                              $.ajaxjson(actionUrl, query, function (d) {
                                  if (d.Success) {
                                      msg.ok(d.Message);
                                      editDailog.dialog('close');
                                      mygrid.reload();
                                  } else {
                                      MessageOrRedirect(d);
                                  }
                              });
                          }
                      }
                  });
      
      
              } else {
                  msg.warning('請選擇要修改的組織機(jī)構(gòu)!');
                  return false;
              }
              return false;
          } 

        刪除組織機(jī)構(gòu)代碼如下: 

      DeleteOrganize: function () { //刪除組織機(jī)構(gòu)
              if ($(this).linkbutton('options').disabled == true) {
                  return;
              }
              //功能代碼邏輯...
              var row = mygrid.selected();
              if (row != null) {
                  var childs = $('#organizeGrid').treegrid('getChildren', row.Id);
                  if (childs.length > 0) {
                      $.messager.alert('警告提示', '當(dāng)前所選有子節(jié)點(diǎn)數(shù)據(jù),不能刪除。', 'warning');
                      return false;
                  }
                  var query = 'action=DeleteOrganize&KeyId=' + row.Id;
                  $.messager.confirm('詢問提示', '確認(rèn)要刪除選中的組織機(jī)構(gòu)嗎?', function (data) {
                      if (data) {
                          $.ajaxjson(actionUrl, query, function (d) {
                              if (d.Success) {
                                  msg.ok(d.Message);
                                  mygrid.reload();
                              } else {
                                  MessageOrRedirect(d);
                              }
                          });
                      }
                      else {
                          return false;
                      }
                  });
              }
              else {
                  msg.warning('請選擇要刪除的組織機(jī)構(gòu)!');
                  return false;
              }
              return false;
          } 

         “用戶-組織機(jī)構(gòu)權(quán)限設(shè)置”功能主要用于設(shè)置特定用戶可以訪問的組織機(jī)構(gòu)。有時(shí)我們會有這樣的應(yīng)用,某些數(shù)據(jù)屬于某個(gè)組織機(jī)構(gòu)內(nèi)部的數(shù)據(jù),只能指定其他組織機(jī)構(gòu)特定的用戶訪問,那么通過此設(shè)置,我們就可以輕松的控制特定的用戶訪問指定的組織機(jī)構(gòu),“用戶-組織機(jī)構(gòu)權(quán)限設(shè)置”如下圖所示。

        

        在上圖中,我們可以看到對用戶“陳俊熙”設(shè)置了他可以訪問的組織機(jī)構(gòu),我們現(xiàn)在以他的用戶“wikstone”登錄系統(tǒng),可以看到當(dāng)前用戶只能看到對應(yīng)的組織機(jī)構(gòu)了,如下圖所示:

        

        用戶-組織機(jī)構(gòu)權(quán)限設(shè)置代碼如下: 

      SetUserOrganizePermission: function () { //設(shè)置用戶組織機(jī)構(gòu)權(quán)限
              if ($(this).linkbutton('options').disabled == true) {
                  return;
              }
              //功能代碼邏輯...
              var userGrid;
              var curResourceTargetResourceIds = [];
              var setDialog = top.$.hDialog({
                  title: '(用戶-組織機(jī)構(gòu))權(quán)限設(shè)置',
                  width: 670, height: 600, iconCls: 'icon-layout_key', //cache: false,
                  href: "Modules/html/PermissionBacthSetForm.htm?n=" + Math.random(),
                  onLoad: function () {
                      using('panel', function () {
                          top.$('#panelTarget').panel({ title: '組織機(jī)構(gòu)列表', iconCls: 'icon-org', height: $(window).height() - 3 });
                      });
      
                      userGrid = top.$('#leftnav').datagrid({
                          title: '用戶列表',
                          url: 'Modules/handler/UserAdminHandler.ashx',
                          nowrap: false, //折行
                          //fit: true,
                          rownumbers: true, //行號
                          striped: true, //隔行變色
                          idField: 'Id', //主鍵
                          singleSelect: true, //單選
                          frozenColumns: [[]],
                          columns: [[
                              { title: '登錄名', field: 'UserName', width: 120, align: 'left' },
                              { title: '用戶名', field: 'RealName', width: 150, align: 'left' }
                          ]],
                          onLoadSuccess: function (data) {
                              top.$('#rightnav').tree({
                                  cascadeCheck: false, //聯(lián)動選中節(jié)點(diǎn)
                                  checkbox: true,
                                  lines: true,
                                  url: 'Modules/handler/OrganizeAdminHander.ashx?action=treedata',
                                  onSelect: function (node) {
                                      top.$('#rightnav').tree('getChildren', node.target);
                                  }
                              });
                              top.$('#leftnav').datagrid('selectRow', 0);
                          },
                          onSelect: function (rowIndex, rowData) {
                              curResourceTargetResourceIds = [];
                              var query = 'action=GetPermissionScopeTargetIds'
                                        + '&resourceCategory=PiUser&resourceId=' + rowData.Id
                                        + '&targetCategory=PiOrganize';
                              $.ajaxtext('handler/PermissionHandler.ashx', query, function (data) {
                                  var targetResourceTree = top.$('#rightnav');
                                  targetResourceTree.tree('uncheckedAll');
                                  if (data == '' || data.toString() == '[object XMLDocument]') {
                                      return;
                                  }
                                  curResourceTargetResourceIds = data.split(',');
                                  for (var i = 0; i < curResourceTargetResourceIds.length; i++) {
                                      var node = targetResourceTree.tree('find', curResourceTargetResourceIds[i]);
                                      if (node)
                                          targetResourceTree.tree("check", node.target);
                                  }
                              });
                          }
                      });
                  },
                  submit: function () {
                      var allSelectTargetResourceIds = permissionMgr.getSelectedResource().split(',');
                      var grantResourceIds = '';
                      var revokeResourceIds = '';
                      var flagRevoke = 0;
                      var flagGrant = 0;
                      while (flagRevoke < curResourceTargetResourceIds.length) {
                          if ($.inArray(curResourceTargetResourceIds[flagRevoke], allSelectTargetResourceIds) == -1) {
                              revokeResourceIds += curResourceTargetResourceIds[flagRevoke] + ','; //得到收回的權(quán)限列表
                          }
                          ++flagRevoke;
                      }
      
                      while (flagGrant < allSelectTargetResourceIds.length) {
                          if ($.inArray(allSelectTargetResourceIds[flagGrant], curResourceTargetResourceIds) == -1) {
                              grantResourceIds += allSelectTargetResourceIds[flagGrant] + ','; //得到授予的權(quán)限列表
                          }
                          ++flagGrant;
                      }
      
                      var query = 'action=GrantRevokePermissionScopeTargets&resourceId=' + top.$('#leftnav').datagrid('getSelected').Id
                                + '&resourceCategory=PiUser&targetCategory=PiOrganize'
                                + '&grantTargetIds=' + grantResourceIds + "&revokeTargetIds=" + revokeResourceIds;
                      $.ajaxjson('handler/PermissionHandler.ashx', query, function (d) {
                          if (d.Data > 0) {
                              msg.ok('設(shè)置成功!');
                          }
                          else {
                              alert(d.Message);
                          }
                      });
                  }
              });
      
          } 

        “角色-組織機(jī)構(gòu)權(quán)限設(shè)置”功能與“用戶-組織機(jī)構(gòu)權(quán)限設(shè)置”功能類似,這兒只是做的對角色的控制。(角色-組織機(jī)構(gòu))權(quán)限設(shè)置界面如下:。

           

      相關(guān)資源分享 

      1、基于.NET的快速信息化系統(tǒng)開發(fā)整合框架 —RDIFramework.NET—系統(tǒng)目錄

      2、Jquery EasyUI官方網(wǎng)站

      3、Jquery學(xué)習(xí)官方網(wǎng)站

       4、Jquery EasyUI本地實(shí)例文件(如果嫌官網(wǎng)速度過慢,可以下載這個(gè)看)

      5、Jquery權(quán)威指南下載

      6、Jquery權(quán)威指南源代碼下載

      7、Jquery EasyUI 1.3中文.chm文件下載

      8、JavaScript權(quán)威指南(第六版)中文版(強(qiáng)烈推薦)在線觀看

      posted @ 2013-11-03 10:48  .NET快速開發(fā)框架  閱讀(21845)  評論(26)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲全网成人资源在线观看| 伊人久久大香线蕉AV网| 在线中文字幕国产精品| 亚洲天天堂天堂激情性色| 免费久久人人爽人人爽AV| 精品无码人妻| 老司机午夜精品视频资源| 国产人妻一区二区三区四区五区六| 国产精品中文一区二区| 国产稚嫩高中生呻吟激情在线视频| 日韩av日韩av在线| 国产精品一区二区久久毛片| 三级三级三级A级全黄| 亚洲一区二区偷拍精品| 亚洲一区二区三区久久受| 亚洲成av人片天堂网无码| 伊人久久大香线蕉综合网站| 无套内谢少妇一二三四| 国产成人精品无码播放| 国内揄拍国内精品少妇国语| 国内自拍小视频在线看 | 精品亚洲国产成人av在线 | 99精品国产兔费观看久久99| 国产精品系列在线免费看| 色妞www精品免费视频| 久久国产精品伊人青青草| 精品国产品香蕉在线| 99久久精品费精品国产一区二| 日韩亚洲精品国产第二页| 人妻无码中文字幕| 亚洲国产日韩a在线播放| 日韩精品国产中文字幕| 亚洲色www永久网站| 熟女一区| 欧洲熟妇色xxxxx欧美| 亚洲午夜精品国产电影在线观看| 亚洲精品漫画一二三区| 莎车县| 久久综合激情网| 一本精品99久久精品77| 日本精品不卡一二三区|