我的asp.net mvc(C#)应用程序中的数据库列表框中填充了一些项目。
我需要提供一个选项来向上/向下移动列表框中的项目,并使用更新的订单将其存储回数据库。
我喜欢使用jquery向上/向下移动列表框中的项目。这是最好的方式/灵魂吗?或者除了将它与listbox一起使用之外,还有其他方法吗?
答案 0 :(得分:4)
我没有代码,但网上有几个使用jQuery移动div的例子。
我的建议是放弃列表框以支持一些可移动的div或其他东西。
Something like this might help you。它使用我认为的列表,并允许您重新排序它们。然后,您可以jQuery新订单并将其存储在数据库中。
答案 1 :(得分:3)
您可以使用以下内容移动项目客户端:
$("#btnMoveSectionUp").click(function (e) {
var curr = $("#<%= lstEditReportSections.ClientID %> option:selected");
if (curr.length == 0) return;
if (curr.index() > 0) {
var prev = curr.prev();
curr.insertBefore(prev);
}
});
$("#btnMoveSectionDown").click(function (e) {
var curr = $("#<%= lstEditReportSections.ClientID %> option:selected");
if (curr.length == 0) return;
if (curr.index() < $("#<%= lstEditReportSections.ClientID %> option").length - 1) {
var next = curr.next();
curr.insertAfter(next);
}
});
但是服务器不会看到客户端上所做的更改。我所做的是使用此代码将所有值存储在隐藏字段中,然后将其拆分在服务器端。
$("#<%= btnSaveReport.ClientID %>").click(function (e) {
if (confirm("Are you sure you want to save the report?") != true) return false;
var sections = $("#<%= lstEditReportSections.ClientID %> option").map(function () {
return $(this).val();
}).get().join('#');
$("#<%= hidEditReportSectionsList.ClientID %>").val(sections);
});
这可能不太理想,但它对我有用。