使用表单编辑时的jqgrid多选下拉列表

时间:2014-01-09 09:27:56

标签: jquery jqgrid

这是我的multiselect下拉列的代码。它按预期工作,但我想在编辑模式上进行一些修改。

{
    name: 'SubjectId',
    index: 'SubjectId',
    align: 'center',
    hidden: true,
    viewable: true,
    editrules: { edithidden: true },
    editable: true,
    formatter: 'select',
    editable: true,
    edittype: 'select',
    editoptions: {
        multiselect: true,
        dataUrl: '@Url.Action("getAllSubjects", "Subject")',
        //buildSelect: function (data) {
        //var retValue = $.parseJSON(data);
        buildSelect: function (data) {
            var response, s = '<select>', i;
            response = jQuery.parseJSON(data);
            // s += '<option value="0">--Select Subject--</option>';
            if (response && response.length) {
                $.each(response, function (i) {
                    s += '<option value="' + this.Id + '">' + this.SubjectName + '</option>';
                });
            }
            return s + '</select>';
        },

        dataInit: function (elem) {
            setTimeout(function () {
                $('#SubjectId').multiselect();
            }, 5);

        },
        multiple: true,
    }
},

但是在编辑模式下,我想让多选错误。怎么做。我不明白怎么做。

1 个答案:

答案 0 :(得分:1)

首先,您的代码输入错误:应使用dataInit代替ddataInit

如果您只需要在添加表单而不是编辑表单中使用multiselect,我建议您最好不要使用multiselect: truedataInit。相反,您可以使用beforeShowForm回调(请参阅the documentation)。在回调内部,您可以设置multiple属性(请参阅jQuery.attr)并致电$('#SubjectId').multiselect();。如果您只为“添加”表单指定此类beforeShowForm回调,则应具有所需的行为。对于添加和编辑表单,您应该使用recreateForm: true property