今天Dotjum要跟大家介紹一下 ReorderList 這個控制項,真的非常的有趣,
而且針對排序方面的拖拉就能改變,真的很輕鬆。
話說是這樣的,今天的情境,剛好有各客戶,要更動一些資料的排序,
而且是蠻多張表單的排序,客戶原本出了各Excel請Dotjum調整,
Dotjum心裡想想,自己跑到SQL去改實在太辛苦了,就趕緊實做這各界面出來。
話不多說,請看範例
首先,這個範例是參考MS AJAX原廠網站的 ReorderList Sample 及 章立民老師 書中章節 ,
先說明一下資料欄位 主鍵、顯示、排序
Step 1. 首先 先拉 AJAX Control 到畫面來
<ajaxToolkit:ReorderList ID="ReorderList1" runat="server"
PostBackOnReorder="true" DataSourceID="SqlDataSource1"
DataKeyField="主鍵欄位 SortOrderField="Sort欄位"
ItemInsertLocation="End" DragHandleAlignment="Left"
CssClass="reorderList" CallbackCssStyle="cssCallBack" ShowInsertItem="true" AllowReorder="true">
<ItemTemplate>
<%# Eval("Sort欄位")%> <%# Eval("主鍵欄位")%>
</ItemTemplate>
<EmptyListTemplate>
很抱歉!沒有資料可供顯示與重排。
</EmptyListTemplate>
<DragHandleTemplate>
<div class="cssDragHandle"></div>
</DragHandleTemplate>
<ReorderTemplate>
<asp:Panel ID="panReorderTmp" runat="server" CssClass="cssReorder">
請拖曳資料項目,以便調整順序。
</asp:Panel>
</ReorderTemplate>
</ajaxToolkit:ReorderList>
Step 2. 設定 SqlDataSource
因為我們要使用到 SELECT 跟 UPDATE 所以這兩邊都要設定
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT a AS 主鍵,b AS 顯示,C AS 排序 FROM Table1 ORDER BY FCM_Sort" OldValuesParameterFormatString="original_{0}"
UpdateCommand="UPDATE Table1 SET 排序 = @排序 WHERE 主鍵=@Original_主鍵 " ConflictDetection="CompareAllValues">
<UpdateParameters>
<asp:Parameter Name="Original_主鍵" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
這邊要注意的 OldValuesParameterFormatString="original_{0}" 這個要設定一下,至於為什麼,Dotjum還找不到一個比較好的解釋,
下一個修改的範例,在跟大家說明。
Step 3. 就能直接使用拖拉的方式,就會更新順序。
就這樣簡簡單單,就做出一個可以直接推拉就執行UPDATE順序,最重要的是,
他還幫你算了一下順序,其他號碼都直接往後退了一碼,這個功能真的很酷,
之前Dotjum為了做類似的東西,還要先把資料Sort丟到Array,然後分析資料再更新,
沒想到 Reorder List 輕輕鬆鬆就做出來,只需三個步驟。
這次有趣嗎?下次在介紹有趣的給你知道。