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

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

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

      吐槽一次MVC與Jq EasyUI的經歷

      MVC在Web開發中的優勢(在TDD方面、邏輯與UI的徹底分離)已無需多言,除此之外個人感覺在給UI提供JSON各式的數據也更加方便。

      但是總體上說,在公司的這次MVC經歷最后的感覺還是比較失敗。個人記錄下來在此做個反思,同時希望和大家一起交流,向大家學習。

      整體項目截圖如下:

       

      (圖1)

      首先從以上截圖中, 個人就犯錯了。從整體架構上來說,項目中的授權部分(Accredit )之前是希望通過AOP的方式進行的,最后和在基礎加上的AOP部分就發生了劇烈的沖突。這是一個非常致命的錯誤!導致只有的AOP上無法進行。

       

       接下來的問題,注意體現就是EasyUI上了。

      1、EasyUI數據綁定 

       EasyUI 在統計數據表中比較方便。數據只要有只有配置響應的字段名稱就可以很方便的進行綁定。個人目前知道有兩種方式:

              方式一、

      在頁面的加載的時候,使用datagrid方法進行。如下代碼:

          

                     $('#grid').datagrid({ title: '數據列表',
                      iconCls: 'icon-save',
                      nowrap: false,
                      striped: true,                
                      url: '<%Url.Action("LoadMyPostMeetings") %>',
                      remoteSort: true,
                      fitColumns: true,
                      fit: true,
                      width:'auto',
                      height:'auto',
                      idField: 'Guid',
                      frozenColumns: [[
                          { field: 'Id', checkbox: true }
                      ]],
                      columns: [[                    
                          { field: 'Title', title: '標題', width: 80, align: 'left'},
                          {
                              field: 'Time',
                              title: '時間',
                              width: 60,
                              align: 'left',
                              formatterfunction(value) {
                                  var date = (new Date(parseInt(value.substring(value.indexOf('(') + 1, value.indexOf(')')))));
                                  return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + "  " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
                              }
                          },
                          {
                              field: 'ImportantLevel',
                              title: '重要等級',
                              width: 30,
                              align: 'left',
                              formatter: function(value) {
                                  switch (value) {
                                  case 0:
                                      return "普通";
                                  case 1:
                                      return "重要";
                                  default:
                                      return "非常重要";                                
                                  }                            
                              }
                          },
                          { field: 'Address', title: '會議地點', width: 40, align: 'left' }
                      ]],
                      pagination: true,
                      rownumbers: true,
                      onLoadSuccess:function (data){                 
                          if(data.Identity) {
                              for (var i = 0; i < data.rows.length; i++) {
                                  if (data.rows[i].IsCompleted == 1) {
                                      $(".datagrid-body >table tr").eq(i).find("td:last").find("a").eq(1).removeAttr("href").removeAttr("onclick").attr("title", "已關閉");;
                                  }
                              }
                          } else {
                              for (var k = 0; k < data.total; k++) {
                                  $(".datagrid-body >table tr").eq(k).find("td:last").find("a").eq(1).removeAttr("href").removeAttr("onclick").attr("title", "已關閉");;
                              }
                          }
                      }});  

       

      這種方式可以在代碼中對所要綁定的數據進行格式化,如以上代碼中的formatter 。

                  

      方式二、由表定義需要顯示的字段名稱,datagrid函數獲取數據進行綁定。如下:

        <table id="userTable"  toolbar="#toolbar" >
          <thead>
              <tr>
                          <th checkbox="true" field="Guid" />
                          <th field="UserName" sortable="true" width="25%">用戶名</th>
                          <th field="AccountName" sortable="true" width="25%">賬號</th>
                          <th field="BeginIP" sortable="true" width="25%">起始IP</th>
                 <th field="EndIP" sortable="true" width="25%">截止IP</th>
               </tr>
          </thead>
              </table> 


       $('#userTable').datagrid({
                          title: '賬號列表',
                          iconCls: 'icon-save',
                          nowrap: false,
                          striped: true,
                          url: '<%=Url.Action("LoadUsers") %>',
                          remoteSort: true,
                          fitColumns: true,
                          fit: true,
                          idField: 'Guid',
                          frozenColumns: [[
                              { field: 'Id', checkbox: true }
                          ]]  });  

       

      當然 ,像一些EasyUI中設置表格是否分頁等信息也可以在表格的HTML中進行設置,datagrid只獲取JSON格式的數據然后對表格進行綁定。

       

      總結:比較綁定表格的這兩種方式,我發現:

      一、第一種雖然需在JS中定義需要顯示的字段數據,但是對數據可以方便的進行格式化。第二種方式,直接在表格中定義需顯示的字段,卻不太好對數據進行格式化。

       二、在使用datagrid對表格進行數據綁定的時候,  獲取數據的URL信息(如:url: '<%=Url.Action("LoadUsers") %>')在以后是不能變更的。這里的不能變更指的是不能換成另外一個Action進行獲取另外的JSON數據對表格進行綁定處理。 當然,如需使用同一個Action進行處理,只是在Action中的參數不同,還是可以這樣使用的。

      可能以上第二點中說的不是文字表述的不是特別清楚明了,我這里舉例進行說明.

       

            (圖2) 

      如上圖,在表格上方有一組操作方法,在其中的【搜索】中,我彈出一個DIV,選中條件然后重新獲取數據對表格進行綁定。這時,獲取到JSON數據后,這樣對表格進行重新綁定:

      $("#userTable").datagrid('reload',jsonDatas) 

      這樣,由于對表格進行reload,又重新指定數據源,表格是顯示了正確數據。但是,若此時,對表格的查詢結果進行分頁,則表格顯示的數據不再是查詢獲取到的數據,而是重新返回到有datagrid中設置的 url: '<%=Url.Action("LoadUsers") %>'在你選定的分頁上的數據。問題就比較悲劇了。

       

      在這點上,EasyUI也有一種解決問題的方式將 你選定的條件發送到Url指定的Controller進行處理,如下:

      $("#userTable").datagrid('load',{'key1':'value1','key2':'value2'}); 

      當然,url所指定的Action中需有key1、key2這樣的參數。

       

      2、 為列表指定操作區:

      為列表指定操作區,如圖2。同表格的綁定方式一樣,同樣有兩種方式。

      方式一、在表格的datagrid方法中中,通過toolbar指定:如下代碼: 
       

       

      #("userTable").datagrid({ 

      /* 前面表格部分同上,在此省略*/

      toolbar: ['-', {
                              id: 'btnSave',
                              text: '添加',
                              iconCls: 'icon-add',
                              handler: function() {
                                  this.href = '<%=Url.Action("AddMeeting1") %>/';
                              }
                          },
                          '-', {
                              id: 'btnUpdate',
                              text: '修改',
                              iconCls: 'icon-edit',
                              handler: function(msg) {
                                  var row = $('#grid').datagrid('getSelected');
                                  if (row) {
                                      this.href = '<%=Url.Action("AddMeeting1") %>' + "/" + row.Guid;

                                  } else {
                                      $.messager.alert('提示', '請選擇要修改的數據');
                                      return;
                                  }
                              }
      });

      方式二、在表格的HTML中使用easyUI中的toolbar指定。如下代碼:

       

       <table id="dg"  toolbar="#toolbar" > 
            
       </table> 

         <div id="toolbar">
                  使用人姓名:<input type="text" name="searchName" id="searchName" />
                  <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-search" plain="true" onclick="check()">查詢</a>
                  <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">增加</a>
                  <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editUser()">修改</a>
                  <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="removeUser()">刪除</a>
                  <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="ShowImportUsers()">導入用戶數據</a></div>  

              

       這兩張方式倒是沒有什么不同,只是在第一種方式中,如果要有一個查詢的輸入框(如下圖三:):不知如何寫一個input標簽到配置的toolbar中,因此第二種方式更占優勢。

       

       

      3、在表格的datagrid中設定多少行為已經選中

      通常,為了操作批量操作,一般都會在表格第一列顯示一個CheckBox。在通過JS,也很容易地將Checkbox勾選上,代碼如下:

       

          for (var i = 0; i < result.Total; i++) { 
        
          $(".datagrid-body input[type=checkbox]:eq(" + i + ")").attr("checked", "checked");
      }  

      但是千萬別以為這樣操作了就萬事大吉,最重要的問題還有待解決。

      在EasyUI中,如果我們將表格手動勾選上以后,是通過$("#userTable").datagrid('getSelections')獲取選中的行的。但是以上將Checkbox勾選上的JS,固然是將Table中的行選中了,但通過$("#userTable").datagrid('getSelections')是獲取不到行的。

      如何將EasyUI綁定的表格行通過JS“真正”綁定上呢,? 答案就是$("#userTable").datagrid('selectRow', i) 。

       

       

      4、combogrid中的搜索問題:

      EasyUI中的combox 也就<Select>,可以手動輸入。可以使用如下代碼將它動態進行綁定:

       

                         $('#selectUser').combogrid({ 
           panelWidth: 155,
                          idField: 'Guid',
                          textField: 'UserName',
                          fit:true,
                          url: '<%=Url.Action("LoadUserDatas") %>',
                          columns: [[
                              { field: 'UserName', title: '姓名', width: 60 },
                              { field: '', title: '部門', width: 100 }
                          ]]});  

             

      同datagrid一樣,也是通過url指定的Action進行數據獲取。

       

       

       由于我這輸入后,需要通過選擇的文本獲取人員的GUID,然后寫入庫,這種方式可以實現,下拉表中如果搜索到,人員的會自動被選中。也無需單獨處理。

       

      posted @ 2012-09-24 12:21  tyb1222  閱讀(10357)  評論(17)    收藏  舉報
      主站蜘蛛池模板: 狠狠噜天天噜日日噜无码| 欧美乱大交aaaa片if| 丰满少妇熟乱xxxxx视频| 男人的天堂av一二三区| 亚洲高请码在线精品av| 国内自拍小视频在线看| 久久一日本综合色鬼综合色| 一区二区亚洲人妻精品| 亚洲无人区码一二三四区| 国产综合视频一区二区三区| 日本阿v片在线播放免费| 国产高清精品在线91| 国产性色av免费观看| 日本免费一区二区三区| 国产情侣激情在线对白| 成人午夜免费无码视频在线观看| 双腿张开被5个男人调教电影| 18禁亚洲一区二区三区| 日本一卡2卡3卡4卡无卡免费| 国产精品先锋资源在线看| 国产94在线 | 亚洲| 国产精品一区二区三区四区| 午夜爽爽爽男女污污污网站| 国产亚洲精品自在久久vr| 曰韩亚洲av人人夜夜澡人人爽| 漂亮人妻中文字幕丝袜| 成人特黄特色毛片免费看| 99久久精品久久久久久婷婷| 亚洲精品一区二区天堂| 国产免费又黄又爽又色毛| 蜜桃av多人一区二区三区| 国产精品亚洲中文字幕| 亚洲精品一区二区三区大桥未久| 18禁极品一区二区三区| 四虎成人在线观看免费| 曰韩精品无码一区二区三区视频| 色欲av久久一区二区三区久| 国产精品一二三区久久狼| 亚洲永久精品免费在线看| 岛国最新亚洲伦理成人| 松阳县|