代码之家  ›  专栏  ›  技术社区  ›  user3462433

jqgrid编辑组合列并绑定数据

  •  0
  • user3462433  · 技术社区  · 9 年前

     {
                name: 'PDTime', index: 'PDTime', width: 60, editable: true, formatter: timeSpanHMFormatter, edittype: 'text', editoptions: {
                    custom_element: function (value, options) {
                        var elemStr = '<div> <select id="UTTime" name="UTTime" >'
    
                        for (var i = 0; i < 24; i++) {
                            elemStr = elemStr + '<option value="' + i + '">' + i + '</option>'
                        }
                        elemStr = elemStr + "</select> </div>";
                        return $(elemStr)[0];
                    },
                    custom_value: function (elem, operation, value) {
                        console.log(elem);
    
                    }
                }
            },
    

    格式化程序是一个显示小时和分钟的时间跨度显示器。值“PDTime”是一个具有小时和分钟属性的对象。

    function timeSpanHMFormatter(cellvalue, options, rowObject) {        
        if (cellvalue.Hours == 0 && cellvalue.Minutes == 0)
            return "";
        var value = "00:00";
    
        if ( cellvalue.Hours.toString().length == 1 )
            value = "0" + cellvalue.Hours
        else
            value = cellvalue.Hours
    
        if (cellvalue.Minutes.toString().length == 1)
            value = value + ":0" + cellvalue.Minutes
        else
            value = value + ":" + cellvalue.Minutes
    
        return value;
    }
    

    在查看模式下,单元格看起来像02:30等,具体取决于值。我想在编辑模式下将值绑定到这个PDTime对象,但我不确定该怎么做。

    custom_元素现在创建了一个小时下拉列表,我正在尝试将下拉列表中的选定值绑定到 PDTime.Hours

    1 回复  |  直到 9 年前
        1
  •  0
  •   Tony Tomov    9 年前

    从中可以看出 Guriddo Documentation here

    以下是示例:

    custom_value: function (elem, oper) {
        if(oper==='get') {
            var hour = $("#UTTime", elem).val();
            // get the minutes according to your definition
            var time = $("#UTTime", elem).val(); 
            return {"Hours" : hour,  "Minutes": time};
        }
    },
    

    请注意,当数据发布到服务器时,PDTime是一个对象。您可以使用serializeRowData事件简化返回一个或多个值的post( look here )此事件是jqGrid事件,您可以这样做:

    ...jqGrid({
    ....
        serializeRowData : function( postdata ) {
            var hours = postdata.PDTime.Hours;
            var minutes postdata.PDTime.Minutes;
            posdata.PDTime = hours+":"+minutes;
            // or what you want data combination
            return postdata;
        },
    ...