JQGrid动态选择数据

时间:2010-07-21 13:42:51

标签: select dynamic jqgrid population

我在Example Code at this link

使用了示例代码

我已经让我的网格在添加和编辑时显示动态构建的选择下拉列表。但是,当它只显示网格中的数据时,它会显示下拉列表而不是其关联数据。有没有办法让网格显示与索引相关的数据而不是索引本身。

e.g。我选择的数据可能是“0:你好; 1:世界”;编辑/添加窗口中的下拉列表显示Hello和World并且具有正确的索引。如果单元格的值为1,我希望它在网格中显示World,但它显示为1。

这是我网格中的行本身:

{ name: 'picklist', index: 'picklist', width: 80, sortable: true, editable: true,
  edittype: "select", formatter: "select", editrules: { required: true} },

我在loadComplete事件中填充动态数据内容,如下所示:

$('#mygrid').setColProp('picklist', { editoptions: { value: picklistdata} });

选项列表数据是“0:Hello; 1:World”类型值对的字符串。

任何人都可以提供任何帮助。我是JQGrids的新手,所以请你也提供一些例子。

2 个答案:

答案 0 :(得分:1)

我知道你已经解决了这个问题,但我在项目中遇到了同样的问题,想提供我的解决方案。

首先,我为select列声明了一个自定义格式化程序(在本例中为'username'列)。

$.extend($.fn.fmatter, {
    selectuser: function(cellvalue, options, rowdata) {
        var userdata;
        $.ajax({
            url:'dropdowns/json/user',
            async:false,
            dataType:'json',
            cache:true,
            success: function(data) {
                userdata = data;
            }
        });
        return typeof cellvalue != 'undefined' ? userdata[cellvalue] : cellvalue ;
    }
});

在这种情况下,此格式化程序会加载id和user的映射,并返回特定cellvalue的用户名。然后,我将formatter:'selectuser'选项设置为列colModel,然后就可以了。

当然,这会在网格中显示每行一个json请求。我通过在我的json响应的标题中设置10秒caching来解决这个问题,如下所示:

private function set_caching($seconds_to_cache = 10) {
    $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
    header("Expires: $ts");
    header("Pragma: cache");
    header("Cache-Control: max-age=$seconds_to_cache");
}

我知道这个解决方案并不完美,但它足以满足我的应用需求。缓存命中由浏览器立即提供,网格流畅。最后,我希望修复内置的select格式化程序以使用json数据。

答案 1 :(得分:0)