jQuery easyui datagrid 的數據加載


 
 

       其實easyuidatagrid加載數據只有兩種方式:一種是ajax加載目標url返回的json數據;另一種是加載js對象,也就是使用loadDate方法,這種方法用於加載本地js數據(非url調用)。在項目中我用到的以及研究別人代碼中用到的普遍是第一種,下面就分別對他們進行總結。

     一、ajax加載目標url返回的json數據

      首先明確,通過ajax加載目標url返回的值不一定是json格式,在http://blog.csdn.net/luckystar689/article/details/51107388 這篇文章中,樓主向我們介紹了MVC中傳值返回到View的集中數據格式,對於這篇博客的思考,對於下拉框、表格、text框我們該傳遞何種類型的數據進行總結。而對於datagrid我們選擇用json進行返回值傳遞。

        形式一:

[javascript] view plain copy
 
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">function SelectSubsidiary() {  
  2.     //獲取類別  
  3.     var CadresType = $('#DictionaryName12').combobox('getText');  
  4.     //獲取所屬單位  
  5.     var SubsidiaryName = $('#UnitName1234').combobox('getText');  
  6.   
  7.     $('#dg').datagrid({  
  8.         url: '/CadresBasicInfo/SelectSubsidiaryName?CadresType=' + CadresType + '&SubsidiaryName =' + SubsidiaryName  
  9.     });  
  10.     //刷新表格  
  11.     $("#dg").datagrid("reload");  
  12. }  
  13. </span>  

       該形式直接通過JQuery EasyUI的datagrid方法進行傳值,在url中需要注意當傳遞多個參數的時候,引號之內不能有空格,就像這樣:

 

[javascript] view plain copy
 
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">        url: '/CadresBasicInfo/SelectSubsidiaryName?CadresType=' + CadresType + '&SubsidiaryName =' + SubsidiaryName  
  2. </span>  
       在Controller當中我們所寫的接受View的代碼是這樣的:
[csharp] view plain copy
 
  1. <span style="font-family:Microsoft YaHei;font-size:14px;"> string SubsidiaryName = Request["SubsidiaryName"];</span>  
       在此處會出現一個問題,我在傳值的時候注意到代碼規范中“=”的兩側是要有空格的,但是實際上傳到Controller中的變量卻是"SubsidiaryName ",多出的一個空格,讓我在傳遞多個參數時候在Controller中僅僅能夠收到一個值,這種方式需要小心這一點。

      形式二:

[javascript] view plain copy
 
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">  $.post("/CadresBasicInfo/EditCadresBasicInfo",  
  2.          {  
  3.              "sex": sex, "dictionaryname": dictionaryname, "education": education, "principle": principle, "id": id, "name": name, "position": position, "workexperience": workexperience, "birthday": birthday, "worktime": worktime, "partytime": partytime, "tel": tel  
  4.          },  
  5.   
  6.         function (result) {  
  7.   
  8.             if (result) {  
  9.                 $.messager.alert('提示消息', '縣市區基本信息編輯成功!', 'info')  
  10.                 $("#editCadresBasicWindow").window("close");  
  11.                 $("#dg").datagrid("reload");  
  12.             } else {  
  13.   
  14.                 $.messager.alert('提示消息', '縣市區基本信息編輯失敗!', 'warning')  
  15.             }  
  16.         })  
  17. </span>  
      在js里面可以應用ajax方法,通過地址(/controllor/action),發送post或get請求,執行地址對應的control下的某個action。注意,此時傳遞多個參數,通過{"param1":A,"param2":B}的方式,相對於形式一url的傳參方式,格式上更加合理,出錯概率也低。

 

      對於Controller的返回值的處理,除了通過判斷result的真假方法之外,通過寫success ,complete , failed也可以來進行判斷。

       

       二、loadDate方法 

 

      該方法作為datagrid表格加載的擴展,在考試系統代碼中有用到:

 

[javascript] view plain copy
 
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">function doSearch(value) {  
  2.     var flag=(value != "");  
  3.     if (flag) {  
  4.         var grid = $('#dg');  
  5.         var options = grid.datagrid('getPager').data("pagination").options;  
  6.         var curr = options.pageNumber;  
  7.         var pageSize = options.pageSize;  
  8.         $.ajax({  
  9.             type: "POST", //提交數據的類型 分為POST和GET  
  10.             async: false,  
  11.             url: "/QuestionType/FuzzyQueryQuestionType",  //提交url 注意url必須小寫  
  12.             data: { "SearchContent": value, "pageSize": pageSize, "pageIndex": curr },  
  13.             success: function (data) {  
  14.                 var jsondata = eval(data);  
  15.                 //var jsData = (new Function("", "return " + data))();  
  16.                 $('#dg').datagrid('loadData', data);  
  17.             }  
  18.         });  
  19.         return;  
  20.     }</span>  
      顯然,$('#dg').datagrid('loadDate',date)這句中的date已經在date:{"SearchContent":value,"pageSize":pageSize}規定為一個json字符串,所以LoadDate方法加載的僅僅是本地js的數據,而且最終加載的data值需要轉換成json對象,而不是json字符串。

 

[javascript] view plain copy
 
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">var data = '{"total":1,"rows":[{"id":"001","name":"Vincent","role":"吉他手"}]}';    
  2. data = JSON.parse(data);//轉換成json對象  
  3. $('#dg').datagrid('loadData', data); </span>  
     至此,應用MVC之后對於datagrid的數據加載,目前項目中的應用就這些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM