1

我有一个带有多个 jqGrid 实例的 JSP 页面。该网格的一列具有表示该行是否被选中的复选框。我需要在 jqGrid 中有一个类似 HTML 的普通复选框 - 一个同时具有选中/未选中布尔状态和实际唯一值的复选框,例如:
<input type="checkbox" name="vehicle" value="Car" checked="checked" />

在 jqGrid 中,我面临一个限制,我只能将一个值传递给复选框。在 jqGrid 的 colModel 我有这个:

colModel:[
    {name:'assign', index:'assign', width:200, editable:true, edittype:'checkbox', formatter:"checkbox", formatoptions:{disabled : false}}
    ]

在将数据传递给我的 jqGrid 时,我有这种数据:

var mydata = [
              {assign:"${assignBool}"}
           ];

然而,在 colModel [] "assign" 中设置的值可能是确定复选框是否被选中的布尔值,也可能是我们想要为复选框设置的实际值,以确定选中哪个复选框。

在传递布尔值时,我可以在显示中正确检查复选框,但无法获取值(唯一标识值)。

在将实际唯一值传递给“分配”时,所有复选框都显示所有复选框的默认选中状态不正确。

我无法确定如何将选中状态布尔值和复选框的实际唯一值传递给 jqGrid 中的“分配”行。

我希望能够使用下面的代码遍历整个页面并获取所有复选框的实际唯一值:

$("#editBtn").click(function() {
    var val = [];
    var checkedNames = '';
    $('input:checkbox:checked').each(function(index) {
        val[index] = $(this).val() + ',';
        checkedNames += val[index];
        }
    );  
    alert("Checked check box values: " + checkedNames);
});

如果我将布尔检查状态传递给上面的“分配”,那么我在 checkedNames 变量中得到的只是 True/False 或 Yes/No 值的列表,而不是实际值。

有没有其他人遇到过类似的问题,或者有人有解决这个问题的方法吗?对我来说,这似乎是 jqGrid 的一个限制,或者我可能不知道 jqGrid 中有这样的功能。在这方面的任何帮助将不胜感激。

4

1 回答 1

1

我经常使用 jqGrid 来管理自定义行为的一件事是将我想要显示的 HTML 作为文本传递给 colModel。因此,不要使用edit上面列出的属性,只需将 HTML 作为文本从服务器的 JSON 响应中发送。

jqGrid 会将其呈现为 HTML,然后您可以使用 jQuery 管理行为(看起来您很熟悉)。

更新 例如,我想将jQuery Sparklines集成到我的网格中,所以在我服务器上的控制器中(我使用的是 ASP.NET MVC),我返回:

return Json(new
{
    total = (int)Math.Ceiling((double)data.Count / rows),
    page = 1,
    records = data.Count,
    rows = (from item in data
            select new
             {
                 id = "GR" + data.IndexOf(item),
                 cell = new object[] 
                 { 
                     item.Name,
                     "<span class=\"inlinesparkline\" values=\"" + item.SparklineData + "\"></span>"
                 }
             }).ToArray()
        });

在我的 jqGrid 中,此列在 colModel 中作为文本:

...
colModel: [
    { name: 'Name', index: 'Name' },
    { name: 'Sparkline', index: 'Sparkline', classes: 'sparkcell' }
],
...

现在在我的 gridComplete 中,我可以使用 jQuery 使用选择器来做任何我需要的事情.sparkcell

...
gridComplete: function () {
    $('.sparkcell').sparkline();
},
...
于 2012-06-11T18:26:33.743 回答