数据未显示在jQuery multiselect插件中

时间:2013-08-13 10:16:14

标签: c# javascript jquery html ajax

我正在尝试使用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>

2 个答案:

答案 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 })

您甚至可以使用对象数组,一次提供多个选项。

一切都很简单。

并且不需要任何刷新调用,正如一些人所说的那样。