JQGrid表单编辑:动态修改列的elmprefix

时间:2013-01-17 19:25:57

标签: jquery jqgrid

我为初始条件添加了一些代码,以防有人感兴趣;我将此代码放在Country datainit中:

    setTimeout(function ()
                            {
                                var required = $(elem).val() === 'US';
                                grid.jqGrid('setColProp', 'PostalCode', { editrules: { required: required} });
                                $('#PostalCode').siblings('.mystar').html(required ? '*' : ' ');
                            }, 100);

(据我所知,JQGrid的新版本不需要setTimeout,但我遇到升级问题。)


我需要动态设置成形列的elmprefix。这个想法是,对于美国,需要邮政编码。必需元素正在运行,但elmprefix未显示。

dataEvents: [
    {
        type: "change",
        fn: function (e) {
            changeStateSelect($(e.target).val(), e.target);
            var isUS = $(e.target).val() == 'US';
            grid.jqGrid('setColProp', 'PostalCode', { editrules: { required: isUS },
                formoptions: { elmprefix: (isUS ? "<font color='red'>*</font>" : " ")}
            });
        } 
    },
    {
        type: "keyup",
        fn: function (e) { $(e.target).trigger('change'); }
    }
]

有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

在创建编辑表单之前,将使用选项formoptions.elmprefixformoptions的其他属性。您可以使用回调beforeInitData或事件jqGridAddEditBeforeInitData在创建表单之前修改数据。

如果您确实需要动态显示/隐藏星号,您可以手动隐藏相应的元素。例如,您可以将elmprefix定义为

elmprefix: "<span class='mystar' style='color:red'>*</span>"

能够轻松找到并修改它。然后你可以使用

$("#PostalCode").siblings(".mystar").html($(e.target).val() === 'US' ? "*" : "&nbsp;");

change处理程序内而不是grid.jqGrid('setColProp', 'PostalCode', ...);