首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

30 分鐘精通 JQueryElement Repeater:無刷新資料綁定完整指南

     編輯:ASP.NET 基礎

JQueryElement Repeater 是一款強大的 ASP.NET 伺服器端控制項,結合 jQuery UI 實現豐富的無刷新資料操作體驗。本文系統整理其核心功能、設定技巧、模板系統、特殊綁定語法與進階特性,助您快速上手開發高互動性 Web 應用。

環境建置與命名空間註冊

<%@ Register Assembly="zoyobar.shared.panzer.JQueryElement" 
    Namespace="zoyobar.shared.panzer.ui.jqueryui" TagPrefix="je" %>
<%@ Register Assembly="zoyobar.shared.panzer.JQueryElement" 
    Namespace="zoyobar.shared.panzer.web.jqueryui" TagPrefix="je" %>

需引用 jQuery UI 腳本與樣式(含中文化日期選擇器):

<link type="text/css" rel="stylesheet" href="jquery-ui-1.8.15.custom.css" />
<script src="jquery-1.6.2.min.js"></script>
<script src="jquery-ui-1.8.15.custom.min.js"></script>
<script src="jquery.ui.datepicker-zh-CN.js"></script>

核心功能架構

資料綁定語法

  • 欄位綁定:#{fieldName} 於 ItemTemplate 中輸出欄位值,亦可用於標籤屬性如 title="#{realname}"
  • 欄位運算式:#{age, convertAge(#)} 傳遞欄位值給 JS 函數處理,或直接撰寫 #{age, # <= 0 ? '不可能吧' : #.toString()}
  • 屬性綁定:@{propertyName} 於 FooterTemplate 等處輸出分頁資訊如 第 @{pageindex}/@{pagecount} 頁
  • 屬性運算式:@{pagecount, @ <= 0 ? '-' : @} 條件式輸出

基本屬性設定

屬性說明
SelectorjQuery 選擇器字串,指定頁面容器元素,如 '#list'
IsVariabletrue 時產生同名 JS 變數,便於客戶端程式存取
PageSize / PageIndex分頁筆數與初始頁碼
Field參與綁定的欄位陣列,如 ['id','realname','age']
FilterField / FilterFieldDefault搜尋條件欄位與預設值
SortField排序欄位陣列
FieldMask欄位驗證正則,格式 {field: {reg: '', tip: '', type: ''}}

非同步服務端方法設定

支援 WebService (.asmx) 與一般處理常式,可單獨指定各操作端點:

<je:Repeater ID="studentRepeater" runat="server"
    FillAsync-Url="webservice.asmx" FillAsync-MethodName="Fill"
    UpdateAsync-Url="webservice.asmx" UpdateAsync-MethodName="Update"
    InsertAsync-Url="webservice.asmx" InsertAsync-MethodName="Insert"
    RemoveAsync-Url="webservice.asmx" RemoveAsync-MethodName="Remove">
</je:Repeater>

進階參數傳遞可使用巢狀 <FillAsync> 區塊搭配 <ParameterList> 定義 Expression 或 Selector 類型參數。

請求/回應資料格式規範

填充/搜尋請求參數: pageindex, pagesize, [搜尋欄位], __order, __group
回應 JSON 結構:

{
  "__success": true,
  "rows": [ {"id":1,"realname":"jack","age":20}, {"id":2,"realname":"tom","age":21} ],
  "itemcount": 120
}

.NET 4.0 可使用匿名型別直接回傳:return new { __success = true, rows = students.ToArray(), itemcount = 120 };

模板系統完整對照

模板用途備註
ItemTemplate顯示未變更狀態列項預設也用於 updated/inserted 狀態
UpdatedItemTemplate顯示更新狀態列項可搭配 je-class 區分樣式
InsertedItemTemplate顯示新增狀態列項同上
EditItemTemplate編輯模式列項含輸入控制項與儲存/取消按鈕
FilterTemplate搜尋列模板配合 je-id 綁定搜尋欄位
NewItemTemplate新增列模板配合 je-id 綁定新增欄位
HeaderTemplate / FooterTemplate / EmptyTemplate表頭/表尾/無資料模板Footer 適合放分頁資訊
GroupTemplate分組標題列搭配 GroupField 使用
RemovedItemTemplate刪除動畫模板可設計淡出效果

特殊綁定屬性速查表

屬性語法範例功能說明
je-idje-id="realname"綁定特殊 ID,用於編輯/搜尋/新增模板的輸入元素
je-onclickje-onclick="beginedit"綁定行為:beginedit/endedit/update/remove/toggleselect/insert/filter/togglesort
je-classje-class="{state}-item"動態套用類別:{header}/{active}/{highlight}/{state}/{sort} 等
je-checkedje-checked="selected"配合 toggleselect 實現列選中狀態
je-valueje-value="keyword"FilterTemplate 中綁定初始搜尋值
je-buttonje-button="label='編輯';icons={primary:'ui-icon-pencil'};"產生 jQuery UI Button
je-datepickerje-datepicker="dateFormat='yy-mm-dd';"產生 jQuery UI Datepicker
je-templateje-template="my-header"標記現有元素作為模板來源

進階特性

子視圖

透過 shiftview/expandview/collapseview 實現主從資料展開,詳見專文。

資料分組

設定 GroupField 或呼叫 setgroup,搭配 GroupTemplate 顯示分組標題:

<je:Repeater GroupField="category" ...>
  <GroupTemplate><td>@{groupfield}: @{groupname}</td></GroupTemplate>
</je:Repeater>

事件模型

所有事件接收 pe (控制項選項與 jQuery 物件) 與 e (事件資料) 參數。主要事件:
PreUpdate/Updated, PreRemove/Removed, PreInsert/Inserted, PreFill/Filled, PreExecute/Executed, Navigable, Blocked 等。
可在事件中驗證資料、確認刪除、顯示訊息等。

客戶端方法

透過 IsVariable="true" 產生的 JS 物件可呼叫:fill(), update(), remove(), insert(), sort(), filter(), nextPage(), prevPage() 等。

資源與參考

Repeater 功能展示圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved