jqGrid动态选择字段

时间:2010-08-05 22:17:52

标签: javascript jqgrid javascript-objects

有没有办法动态修改colModel中状态字段的值? 假设我们有一个col模型,其字段如下:

... field ... name: "state",type: "select",
editoptions: {value: "0:state0;1:state1;2:state2;3:state3;4:state4"}

所以我得到了具有此值的状态的选择字段。但我需要动态地决定哪些选择字段应该是可能的。 如果当前行的状态为state0,则只显示state0和state1。 如果state为state1,则display应为state0,state1和state2 依此类推到状态4,只显示stae3和state4。

我能用格式化程序解决这个问题吗,还是有其他方法可以解决这个问题。

为了使其更加困难,我们可以说显示的状态通常取决于我的应用程序中登录的用户。 在某种程度上,用户只能看到state0,state2和state4。 这可能会变得更加复杂,导致state3和state4之间的转换不允许当前用户。

然而,状态本身也是动态的。为我的应用程序中的对象动态生成javascript是否有帮助,它代表一般的状态类并使用此对象在格式化程序中生成我需要的输出? 所以我可以在这个对象中封装逻辑,如何生成输出,另外我只得到用户能够看到的状态。

应该让我一石二鸟。

重读之后,我希望清楚我想做什么,如果不告诉我,我会用更多细节来解释。

具体问题的解决方案,thx to oleg:

    editoptions : {

    value : function(){
        //a function can be called here:
        currentRow=$("#order_items").getGridParam('selrow');
        currentState=$("#order_items").getCell(currentRow,"state");
                    nastyGeneratedThings=function(){
                                     ... do some nasty things with currentState
                                     ... and generate what you want
                                     }
                    return nastyGeneratedThings
    }

我遇到了一些麻烦,导致该功能只被调用一次。所以我必须在Navgrid中设置recreateForm选项。

navGrid("#pager", {
            edit : true,
            add : true,
            del : true
        }, {
            height : 500,
            width : 500,
            // recreate the form every time when edit button is clicked.
            // Default is false.
            recreateForm : true
        }
        });

之后,每次单击编辑时,我的功能都会触发。 希望这能以某种方式帮助某人。

1 个答案:

答案 0 :(得分:1)

value中的editoptions属性不仅可以是字符串,还可以是函数。该函数可以返回一个字符串,如“0:state0; 1:state1; 2:state2; 3:state3; 4:state4”或类似{"0":"state0", "1":"state1", "2":"state2", "3":"state3", "4":"state4"}的对象。顺便说一句,最后一种格式有一些优点:例如,您可以使用':',';'在价值观内部。

该函数没有参数,但您可以使用getGridParam('selrow')方法和getCell(rowid,iCol)getCell(rowid,"state")这样的“状态”列的当前值来获取当前所选行。

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules#editoptionsvalue属性的说明中查看更多内容。可能这可以解决你的问题吗?