我正在尝试使用jQuery multiselect插件填充下拉列表。当我使用具有硬编码值的简单下拉菜单时,它可以正常工作。但是,当我从数据库中获取记录以填充下拉列表时,记录不会显示在IE的下拉列表中(在Chrome中可以正常工作)。
的JavaScript
<script>
function Fill(U, F, D, C) {
$.ajax({ type: "POST",
url: U + '/' + F,
data: D,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
cache: false,
success: function (r) {
var i;
//$('#' + C + '').length = 0;
var myItem = r.d.split('#');
$('#' + C + '').empty();
for (i = 0; i < myItem.length; i = i + 2) {
$('#' + C).append(new Option('' + myItem[i + 1] + '','' + myItem[i] + ''));
}
}
});
}
$(document).ready(function () {
Fill('WebForm1.aspx', 'FillDepartmentDropdown', '{}', 'ddlDepartment');
$("#ddlDepartment").multiselect({
header: "Choose an Department!"
});
});
</script>
CS
[WebMethod]
public static string FillDepartmentDropdown()
{
string DataOutput = "";
DataSet ds;
Hashtable ObjParameters = new Hashtable();
BusinessLogicLayer ObjBusiness = new BusinessLogicLayer();
ds = ObjBusiness.SPDataSet(ObjParameters, "SelectAllDept");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow dr = ds.Tables[0].Rows[i];
DataOutput = DataOutput + "#" + dr["Department"].ToString() + "#" + dr["id"].ToString();
}
return DataOutput;
}
Html
<select id="ddlDepartment" ><option>32</option> <option>3213</option><option>321</option></select>
答案 0 :(得分:1)
问题是因为New Option
有时在IE上运行不好,请尝试更改您将其附加到的方式:'<option value="' + myItem[i + 1] + '">' + myItem[i + 1] + '</option>'
答案 1 :(得分:0)
Jquery multiselect 插件有一个添加选项的特殊方法。如果API文档不够清晰,请始终查看源代码:
$('#Portfolios').multiSelect('addOption', { 'value': value, 'text': text })
您甚至可以使用对象数组,一次提供多个选项。
一切都很简单。
并且不需要任何刷新调用,正如一些人所说的那样。