在ASP.. NET MVC,我怎么能有列表框来管理两个列表的内容
In ASP.NET MVC, how can I have Listboxes to manage the content of two lists
在ASP MVC中制作的网站中,我被要求建立一个页面,提供管理两个字符串列表的内容的功能,如**此**。
两个列表框需要是单选的,有一个按钮可以从一边切换到另一边。
我希望它是客户端,以便在提交表单时,模型绑定器可以将更新的字符串列表发布到控制器。
有人知道这样的控件是否已经存在,就像jqueryUI中提供的那样。如果没有,对如何达到这个结果有什么建议吗?
谢谢大家!
有一篇文章讨论了可用性问题,并比较了多选输入的不同方法。这个资源应该对你有帮助。
我个人喜欢选项SCROLLABLE CHECKBOXES和ASMSELECT
我最近正在探索几个选项。
你可以试试这个纯javascript版本http://www.javascriptkit.com/script/script2/picklist.shtml
或者我开始构建一个JQuery插件,你可以使用作为一个起点http://jsfiddle.net/stokedout/aySLN/4/
(function ($) {
$.fn.twinList = function (options) {
var settings = $.extend({
// Styling
containerClass: 'twl-container',
btnContainerClass: 'twl-btn-container',
leftListClass: 'twl-list left',
rightListClass: 'twl-list right',
selectBtnClass: 'twl-btn select',
selectAllBtnClass: 'twl-btn select-all',
deselectBtnClass: 'twl-btn deselect',
deselectAllBtnClass: 'twl-btn deselect-all',
// Content
selectBtnText: '>',
selectAllBtnText: '>>',
deselectBtnText: '<',
deselectAllBtnText: '<<',
// Config
debug:true
}, options);
return this.each(function () {
var originalList = $(this),
originalOptions = originalList.find('option'),
container,
btnContainer,
leftList,
rightList,
select,
selectAll,
deselect,
deselectAll;
var updateOriginalInput = function () {
var rlOptions = rightList.find('option');
originalOptions.prop('selected', false);
for (var i = 0; i < originalOptions.length; i++) {
for (var j = 0; j < rlOptions.length; j++) {
if (originalOptions[i].value === rlOptions[j].value) {
originalOptions[i].selected = true;
}
}
}
}
container = $('<div/>', {
'class': settings.containerClass
});
leftList = $('<select/>', {
'class': settings.leftListClass,
multiple: true
});
rightList = $('<select/>', {
'class': settings.rightListClass,
multiple: true
});
btnContainer = $('<div/>', {
'class': settings.btnContainerClass
});
select = $('<a>', {
text: settings.selectBtnText,
'class': settings.selectBtnClass,
href: '#',
click: function (e) {
leftList.find('option:selected').appendTo(rightList);
updateOriginalInput();
}
});
selectAll = $('<a>', {
text: settings.selectAllBtnText,
'class': settings.selectAllBtnClass,
href: '#',
click: function (e) {
leftList.find('option').appendTo(rightList);
originalOptions.prop('selected', true);
}
});
deselect = $('<a>', {
text: settings.deselectBtnText,
'class': settings.deselectBtnClass,
href: '#',
click: function (e) {
rightList.find('option:selected').appendTo(leftList);
updateOriginalInput();
}
});
deselectAll = $('<a>', {
text: settings.deselectAllBtnText,
'class': settings.deselectAllBtnClass,
href: '#',
click: function (e) {
rightList.find('option').appendTo(leftList);
originalOptions.prop('selected', false);
}
});
leftList.append(originalOptions.clone());
btnContainer.append(select)
.append(selectAll)
.append(deselect)
.append(deselectAll);
container.append(leftList)
.append(btnContainer)
.append(rightList);
container.insertAfter(originalList);
if (!settings.debug)
originalList.hide();
});
};
})(jQuery);
$('#someList').twinList();
一开始你只需要绑定一个@Html.DropDownListFor()和一些数据。
相关文章:
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 根据两个下拉列表的默认值禁用按钮
- 根据前两个下拉ID显示第三个下拉列表
- 修复列表的绝对位置(li's隐藏在前两个后面)
- 使用两个下拉列表的值填充文本框
- 如何在Javascript中交换两个列表的子列表
- 需要在 html 中使用两个下拉列表来显示不同的 json 值
- 两个下拉列表中的文本字段
- Meteor:如何使用空格键创建包含两个集合数据的树列表
- 使用Jquery比较Javascript中的两个列表/表
- 如何在AngularJS中显示基于两个下拉列表的内容
- jquery-mobile的列表视图中的两个弹出窗口
- 将同一个元素追加到两个下拉列表中只会导致最后一个元素被追加
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- 如何使两个角度列表在html表中并排显示
- 如何在同一个网页上创建两个连接列表
- Kendo Grid UI水印列或一列的两个下拉列表
- AngularJS:用两个JSON数组填充复选框列表,最初检查了一个数组中的一些项
- jQuery ui自动完成下拉列表中的两个字段
- 选择绑定到同一范围的按钮,单击时会相互触发.如何从angular.js中的两个选择列表按钮解除范围绑定