MUI實現上拉載入和下拉刷新

来源:http://www.cnblogs.com/green-jcx/archive/2017/06/29/7095177.html
-Advertisement-
Play Games

編寫存儲過程分頁(此處使用T-SQL) 1 CREATE PROC [dbo].[Common_PageList] 2 ( 3 @tab nvarchar(max), 表名 4 @strFld nvarchar(max), --欄位字元串 5 @strWhere varchar(max), --wh ...


編寫存儲過程分頁(此處使用T-SQL)

 1 CREATE PROC [dbo].[Common_PageList]
 2 (
 3 @tab nvarchar(max),---表名
 4 @strFld nvarchar(max), --欄位字元串
 5 @strWhere varchar(max), --where條件 
 6 @PageIndex int, --頁碼
 7 @PageSize int, --每頁容納的記錄數
 8 @Sort VARCHAR(255), --排序欄位及規則,不用加order by
 9 @IsGetCount bit  --是否得到記錄總數,1為得到記錄總數,0為不得到記錄總數,返回記錄集
10 )
11 AS
12 declare @strSql nvarchar(max)
13 set nocount on;
14 if(@IsGetCount = 1)
15 begin
16  set @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere
17 end
18 else
19 begin
20   set @strSql=' SELECT * FROM (SELECT ROW_NUMBER() 
21   OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS Dwhere
22   WHERE rownum BETWEEN ' + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ' and ' + cast((@PageIndex*@PageSize) as nvarchar(20))
23 end
24 
25 print @strSql
26 exec (@strSql)
27 
28 set nocount off;
分頁存儲過程

 

 

webApi介面(ADO.NET部分封裝了,此處是調用形式)

 1         /// 測試mui下拉刷新
 2         /// </summary>
 3         /// <param name="flag"></param>
 4         /// <returns></returns>
 5         [HttpPost]
 6         public object test(JObject data)
 7         {
 8 
 9             using (var db = new DbBase())
10             {
11                 SqlParameter[] arr = { 
12                                      new SqlParameter{ ParameterName="tab",Value=data["tab"].ToString()},
13                                      new SqlParameter{ ParameterName="strFld",Value=data["strFld"].ToString()},
14                                      new SqlParameter{ ParameterName="strWhere",Value=data["strWhere"].ToString()},
15                                      new SqlParameter{ ParameterName="PageIndex",Value=Convert.ToInt32(data["PageIndex"])},
16                                      new SqlParameter{ ParameterName="PageSize",Value=Convert.ToInt32(data["PageSize"])},
17                                      new SqlParameter{ ParameterName="Sort",Value=data["Sort"].ToString()},
18                                       new SqlParameter{ ParameterName="IsGetCount",Value=Convert.ToInt32(data["IsGetCount"])},
19                                      };
20 
21 
22             return    RepositoryBase.ExecuteReader(db, "Common_PageList", arr);
23 
24 
25             }
webApi介面

 

頁面實現

  1 <!DOCTYPE html>
  2 <html>
  3 
  4     <head>
  5         <meta charset="utf-8">
  6         <title>Hello MUI</title>
  7         <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
  8         <meta name="apple-mobile-web-app-capable" content="yes">
  9         <meta name="apple-mobile-web-app-status-bar-style" content="black">
 10 
 11         <link rel="stylesheet" href="../css/mui.min.css">
 12         <style type="text/css">
 13             
 14             
 15             
 16         </style>
 17     </head>
 18 
 19     <body>
 20         
 21             <header class="mui-bar mui-bar-nav">
 22             <h1 class="mui-title">下拉刷新(單webview模式)</h1>
 23         </header>
 24         
 25         <div id="pullrefresh" class="mui-content mui-scroll-wrapper">
 26             <div class="mui-scroll">
 27                 
 28                     <ul id="container" class="mui-table-view mui-table-view-chevron"></ul>
 29                 
 30             
 31                 
 32             </div>
 33         </div>
 34  
 35      
 36          <ul id="temp" class="mui-table-view" style="display: none;">
 37                  <li class="mui-table-view-cell">
 38                      <a class="mui-navigate-right">
 39                          @name
 40                      </a>
 41                  </li>
 42                 
 43              </ul>
 44         
 45      
 46         
 47         
 48         
 49         <script src="../js/mui.js" type="text/javascript" charset="utf-8"></script>
 50         <script>
 51         
 52         
 53         
 54                 /**
 55                  數據源分頁參數對象
 56                  * */
 57                 var obj={ tab:'SystemUsers',
 58                             strFld:'code,Username',
 59                             strWhere:'1=1',
 60                             PageIndex:1,
 61                             PageSize:10,
 62                             Sort:'Username',
 63                             IsGetCount:0,
 64                             pageCount:0
 65                         }
 66                 
 67             //webApi伺服器介面    
 68             var apiUrl="http://192.168.200.114:8123/api/Common/Base/test";
 69             
 70             
 71                 /**
 72                  * 定義數據源按什麼html方式展示,動態生成html字元串的邏輯
 73                  **/                
 74                 var drawHtml=function(data){
 75                         var html=""
 76                          for (var i=0;i<data.length;i++) 
 77                          {
 78                             var temp=document.getElementById("temp").innerHTML; //模板
 79                             html+=temp.toString().replace('@name',data[i].Username);  //替換參數疊加
 80                         }
 81                          
 82                      return html;
 83                 }
 84             
 85             
 86             
 87             mui.ready(function(){
 88              
 89  
 90              /**
 91                  MUI配置項
 92                  * */        
 93             mui.init({
 94                 pullRefresh: {
 95                     container: '#pullrefresh',
 96                     down: {
 97                         callback: pulldownRefresh
 98                     }, //END 下拉刷新
 99                     up : {    
100                           contentrefresh : "正在載入...",//可選,正在載入狀態時,上拉載入控制項上顯示的標題內容
101                           contentnomore:'沒有更多數據了',//可選,請求完畢若沒有更多數據時顯示的提醒內容;
102                           callback :pullupRefresh //必選,刷新函數,根據具體業務來編寫,比如通過ajax從伺服器獲取新數據;
103                     } //END 上拉載入
104                 }
105             });
106      
107          
108          
109 
110                             
111                 //統計:數據總數、分頁總數    
112                 obj.IsGetCount=1;                     
113                 loadData(apiUrl,obj,0);
114              
115                 //初始化列表數據(第一頁)
116                 obj.IsGetCount=0;        
117                  loadData(apiUrl,obj,0,"down",function(data){                     
118                      //此處實現動態繪製DOM的邏輯,根據數據源自行處理要展示的html方式                                          
119                      return drawHtml(data);
120                      
121                  });
122                 
123                 
124             });
125              
126         
127         
128             
129             /*
130              讀取數據源
131              url:api地址
132              dataObj:數據源分頁查詢參數對象
133              Timeout:指定多少時間後繪製頁面DOM展示對象,
134                              動態生成的元素代碼包含在一個setTimeout函數里,
135                              用    setTimeout,主要對於下拉刷新間隔時間
136              loadType:載入方式:up(上拉載入)、down(上拉刷新)        
137              drawFunction:回調函數,處理拿到數據源,繪製DOM展示界面的html
138                                      ,要接收返回的html字元串
139              * */
140             
141             var loadData=function(url,dataObj,Timeout,loadType,drawFunction){
142                 
143                 mui.ajax(url, {
144                                 type: "post",
145                                 data:dataObj,
146                                 async:false,
147                                 headers: {'Content-Type': 'application/json'},
148                                 success: function(data) {
149                                        
150                                     //統計出數據總數
151                                     if(dataObj.IsGetCount==1)
152                                     {                                                                        
153                                         obj.pageCount=Math.ceil(parseInt(data[0].Column1)/obj.PageSize) ;                                     
154                                          return;
155                                     }
156                     
157                                     setTimeout(function() {            
158                                                                      
159                                     //動態繪製出的Dom元素,結合數據展現
160                                     var html=    drawFunction(data);
161                                          
162                                     if(loadType=="up")    //上拉載入
163                                     {
164                                                 if(obj.PageIndex==obj.pageCount)
165                                                 {
166                                                     //參數為true代表沒有更多數據了。
167                                                     mui('#pullrefresh').pullRefresh().endPullupToRefresh(true);
168                                                 }
169                                                 else
170                                                 {
171                                                     mui('#pullrefresh').pullRefresh().endPullupToRefresh(); 
172                                                 }
173                                             
174                                         //將下一頁數據追加到容器    
175                                         document.getElementById("container").innerHTML=document.getElementById("container").innerHTML+html;
176                                     }
177                                     else if(loadType=="down")  //下拉刷新
178                                     {
179                                         // 該方法的作用是關閉“正在刷新”的樣式提示,內容區域回滾頂部位置
180                                         mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); 
181                                         
182                                         //將第一頁數據覆蓋到容器
183                                         document.getElementById("container").innerHTML=html;
184                                         
185                                         //啟用上拉載入
186                                         mui('#pullrefresh').pullRefresh().enablePullupToRefresh();
187                                          
188                                     }
189                                     
190                                         
191                                         
192                                     
193                                 
194                                     
195                                 }, Timeout);//END setTimeout();
196             
197                                 },//END success();
198                                 
199                                 error: function(xhr, type, errorThrown) {                                 
200                                             console.log(type);
201                                 }//END error();
202                                 
203                     });//END ajax();
204                 
205             }//END loadData();
206             
207             
208             
209     
210              
211      
212             
213           /**
214              * 下拉刷新具體業務實現
215              */
216             function pulldownRefresh() {    
217                     console.log('重置數據,初始到第一頁');
218                     obj.PageIndex=1;
219     
220                      loadData(apiUrl,obj,1000,"down",function(data){
221                      //此處實現動態繪製DOM的邏輯,根據數據源自行處理要展示的html方式                                          
222                      return drawHtml(data);
223                          
224                      });
225         
226         } //END pulldownRefresh() 下拉刷新函數
227             
228             
229              
230             
231     
232             /**
233              * 上拉載入具體業務實現
234              */
235             function pullupRefresh() {
236                 obj.PageIndex++;//當前頁累加,載入下一頁的數據             
237                 console.log("載入第:"+obj.PageIndex+"");
238                 console.log("頁總數:"+obj.pageCount);
239                     
240              loadData(apiUrl,obj,1000,"up",function(data){
241                      //此處實現動態繪製DOM的邏輯,根據數據源自行處理要展示的html方式                                          
242                      return
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先我們來看下有哪些選擇器??? 一.基礎選擇器: html標簽選擇器:通過html標簽來選擇元素。 ①所有的html標簽都可以當做選擇器. ②無論標簽藏多深都會被選中。 ③選擇的是所有的標簽而不是某個具體的標簽。 所以說我們通過html標簽選擇器來設置的都是一些共性問題。 id選擇器: ①任何的標 ...
  • 最近做了一個用canvas合成海報圖片的移動端項目,由於一點canvas基礎都沒有,所以去網上搜了一位前輩的demo,但是開發過程中遇到了很多問題,現將所遇問題及解決方法總結如下: 1、移動端canvas項目適配全屏問題 問題描述:由於canvas的width和height只能設置px值,不支持re ...
  • 恢復內容開始 覽器相容性問題是前端的一個重要部分。 在國內的瀏覽器中,360瀏覽器,QQ瀏覽器等絕大部分都是雙核瀏覽器。雙核瀏覽器即擁有IE相容內核和非IE極速內核兩個內核,分別對應相容模式和極速模式。相容模式時使用IE內核,極速模式採用webkit內核。而目前大部分網站為了性能和用戶體驗,預設使用 ...
  • 移動頁面經常會做到這樣一個效果,看下麵的圖片,重點就是那個固定定位的底部,裡面有個input輸入框,在輸入字元的時候,安卓手機看著是完全沒有問題! 1、頁面沒有點擊底部input的初始狀態 2、安卓手機下的樣子,一切都是那麼的正常,簡直是完美。 3、ios手機下,就是這麼任性,沒有辦法,完全擋著了, ...
  • 數據綁定的方法: 1、利用動態創建元素節點和把它追加到頁面中的方式實現數據綁定(將動態添加的li添加到ul中) 優勢:把需要動態綁定的內容一個個的追加到頁面中,對原來的元素沒有任何的影響 弊端:每當創建一個li,我們就添加到頁面中,引發一次DOM的迴流,最後引發迴流次數過多,影響我們的性能。 2、字 ...
  • 目錄: 一、介紹 二、node安裝 三、webstorm配置node環境 四、代碼介紹 五、如何使用 六、自定義功能變數名稱 七、其他 一、介紹 1、背景 日常工作中,跟後端商定好介面格式後;通常採用的開發方式,就是自己新建一個json文件,手動的模擬一批數據,進行ajax調用。 但是如果遇到後端提供的介面 ...
  • 浮動 會使當前標簽產生上浮效果,從而導致父標簽高度塌陷的問題 1. 給父元素指定高度 <div style="height:200px"> <div style="float:right"></div> </div> 簡單粗暴!高度不定時,如果內部高度大於父級時,容易產生問題 2. 在浮動元素後邊添 ...
  • appcan的 uexXmlHttpMgr.send 或者 appcan.ajax無法同步請求(沒有找到這個屬性),只能非同步,造成迴圈多次提交時由於延遲或網路堵塞等原因無法同步響應,導致提交順序混亂,執行完後回調錯誤或丟數據,如傳統方法(這裡已經引用的JQ包) 1 var data=[]; 2 va ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...