我正在学徒,我的老板给了我一个可重新订购清单的挑战。如何保存可重新订购列表的新订单?
使用Jquery UI我添加了拖放功能,并添加了一个标签来显示每个项目的索引。
问题是我似乎无法得到它将新订单保存回数据库。
这里的中继器...
<asp:Repeater ID="RepeaterWorkOrder" runat="server" OnLoad="Repeater1_PreRender" DataSourceID="sqlwork">
<HeaderTemplate>
<ul id="headingRow" style="list-style-type:none; font-weight:bold;">
<li>
<div class="row">
<div class="col-xs-3">Name</div>
<div class="col-xs-3">Address</div>
<div class="col-xs-2">Service</div>
<div class="col-xs-1">Van</div>
<div class="col-xs-1">Remaining Visits</div>
<div class="col-xs-2">Order of Work</div>
</div>
</li>
</ul>
<ul id="sortable">
</HeaderTemplate>
<ItemTemplate>
<li class="ui-state-default" style="list-style-type:none; margin-top: 10px;" >
<div class="row">
<div class="col-xs-3"><asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex") %>' Visible="true"/> - <asp:Label ID="LabelWorkSheetId" runat="server" Text='<%# Eval ("WorkItemId") %>' Visible="true"></asp:Label> <asp:Label ID="LabelFirstNameEdit" runat="server" Text='<%# Eval ("FirstName") %>'></asp:Label> <asp:Label ID="LabelSurnameEdit" runat="server" Text='<%# Eval ("Surname") %>'></asp:Label></div>
<div class="col-xs-3"><asp:Label ID="LabelAddressLine1Edit" runat="server" Text='<%# Eval ("AddressLine1") %>'></asp:Label>, <asp:Label ID="LabelTownEdit" runat="server" Text='<%# Eval ("Town") %>'></asp:Label>, <asp:Label ID="LabelPostCodeEdit" runat="server" Text='<%# Eval ("PostCode") %>'></asp:Label></div>
<div class="col-xs-2"><asp:Label ID="LabelServiceEdit" runat="server" Text='<%# Eval ("Service") %>'></asp:Label></div>
<div class="col-xs-1"><asp:Label ID="LabelVanEdit" runat="server" Text='<%# Eval ("VanRegistration") %>'></asp:Label></div>
<div class="col-xs-1"><asp:Label ID="LabelRemainingVisits" runat="server" Text='<%# Eval ("RemainingVisits") %>'></asp:Label></div>
<div class="col-xs-2"><asp:TextBox ID="TextBoxOrder" runat="server" Text='<%# Eval ("DayWorkOrder") %>' Width="100px"></asp:TextBox></div>
</div>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
这是jQuery UI的脚本
<script>
function BindControlEvents() {
$("#sortable").sortable();
$("#sortable").disableSelection();
};
$(document).ready(function() {
BindControlEvents();
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function() {
BindControlEvents();
});
</script>
当我加载网页,我得到的项目和使用的列表;
<asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex") %>' Visible="true"/>
他们每个人都有一个索引号,以便列表看起来像...
我再重新排序列表
但是当我刷新页面,它再次加载原来的顺序。
我想当我移动一些东西时,我需要一个脚本来改变那个项目的索引号,因此所有其他的?
阿贾克斯都可以在这里帮忙。 jquery ui有机制在重新排序完成时生成一个事件。在这种情况下,您可以编写一个ajax函数,它将发送重新排序的索引并将此数据发送到服务器。在服务器端,你必须保存它。所以在重新加载时请阅读您已保存并相应显示的订单 –