How to get select's value in jqGrid when using <select> editoptions on a column

前端 未结 4 1220
别跟我提以往
别跟我提以往 2021-01-02 11:20

I have a couple of columns in jqGrid with edittype=\"select\". How can I read the option value of the value currently selected in a particular row?

e.g.: When I prov

4条回答
  •  生来不讨喜
    2021-01-02 11:34

    I just solved this question by using setting JqGrid unformat option and use the following function for unformatting cell value.

    function Unformat_Select(cellvalue, options, cellobject)
    {
        var unformatValue = '';
    
        $.each(options.colModel.editoptions.value, function (k, value)
        {
            if (cellvalue == value)
            {
                unformatValue = k;
            }
        });
    
        return unformatValue;
    }
    

    The above method will be called everytime when grid need cell data like when you call "getRowData" method. However, my function only support key-paired value edit option. You need to change your data like the following pattern.

    editoption: 
    {
        value:
        {
            FE:'FedEx', 
            IN:'InTime', 
            TN:'TNT'
        }
    }
    

    For more information about unformat option, you can see at the following link.

    JqGrid Wiki - Custom Formatter

    PS. It's possible to modify my function to support client-side dropdownlist value. But I think it's impossible to apply this function for server-side dropdownlist value.

    Update

    In the latest jqGrid 3.8.1, I just found some bug when user cancel editing row(or programmatically call "restoreRow" method), jqGrid will create label by using key of data (instead of value of data). I create the following function to fix this issue. For use this, you must it as custom formatter function of this column. This function maps cell value to value of list by comparing key or value.

    function JqGridInlineEditor_SelectFormatter(cellvalue, options, rowObject)
    {
        var temp = '';
        $.each(options.colModel.editoptions.value, function (key, value)
        {
            if (cellvalue == key || cellvalue == value)
            {
                temp = value;
                return false;
            }
        });
    
        return temp;
    }
    

    So, you can send key or value as column data to be rendered by the above custom formatter.

提交回复
热议问题