单击提交或页面回发时,我遇到的问题是没有显示select2值。我正在使用ajax helper从数据库加载数据。
这是我的select2代码:
$('#<%=fstName.ClientID%>').select2({
placeholder: 'Enter Reviewer',
minimumInputLength: 0,
multiple: true,
autoClear:false,
ajax: {
type: 'POST',
url: 'BulkPickers/GetRev',
dataType: 'json',
data:
function (term, page) {
return {
appinstid: appInstId,
searchTerm: term,
selection: $('#<%=fstName.ClientID%>').val()
};
},
results: function (data, page) {
var myResults = [];
$.each(data, function (index, item) {
myResults.push({
id: item.id,
text: item.text
});
});
return {
results: myResults
};
},
initSelection:
function (element, callback) {
var data = [];
$(element.val().split(",")).each(function () {
data.push({ id: this, text: this });
});
callback(data);
}
}
});
答案 0 :(得分:1)
我找到了解决方案。需要在更改文本时填充隐藏字段值,然后使用select2上的隐藏输入值进行初始化。这是完整的代码:
$j('#<%=txtVendor.ClientID%>').select2({
placeholder: 'type the name ',
minimumInputLength: 0,
multiple: true,
autoClear:false,
ajax: {
type: 'POST',
url: 'BulkPickers/GetVendor',
dataType: 'json',
data:
function (term, page) {
return {
appinstid: appInstId,
searchTerm: term,
selection: $j('#<%=txtVendor.ClientID%>').val()
};
},
results: function (data, page) {
var myResults = [];
$j.each(data, function (index, item) {
myResults.push({
id: item.id,
text: item.text
});
});
return {
results: myResults
};
}
}
}).select2("data",vendobj);
$j('#<%=txtVendor.ClientID%>').change(function () {
var selections = (JSON.stringify($j('#<%=txtVendor.ClientID%>').select2('data')));
$j('#<%=hdnVend.ClientID%>').attr("value", selections);
});
答案 1 :(得分:0)
我认为这可能是由于您在回发期间没有重新填充SELECT中的项目(因为您使用AJAX填充了这些项目,并且它们不是模型的一部分。)因此,您正在尝试设置SELECT到不存在的OPTION的ID。
我遇到了描述的问题,并在SELECT中添加了模型中引用的项目作为选择,这意味着在回发之后该值会自动保留在SELECT中。无需“手动”设置所需的值。该选项必须在SELECT中才能显示。