Jquery jqGrid-如何将布尔选中状态值和实际唯一值传递给jqGrid中的复选框?

Jquery jqGrid-如何将布尔选中状态值和实际唯一值传递给jqGrid中的复选框?,jquery,jqgrid,Jquery,Jqgrid,我有一个包含多个jqGrid实例的JSP页面。该网格的一列有复选框,表示是否选中该行。我需要在jqGrid中有一个普通的类似HTML的复选框,该复选框同时具有选中/未选中的布尔状态和实际的唯一值,如: 在jqGrid中,我面临一个限制,即我只能将一个值传递给复选框。在jqGrid的colModel中,我有: colModel:[ {name:'assign', index:'assign', width:200, editable:true, edittype:'checkbox',

我有一个包含多个jqGrid实例的JSP页面。该网格的一列有复选框,表示是否选中该行。我需要在jqGrid中有一个普通的类似HTML的复选框,该复选框同时具有选中/未选中的布尔状态和实际的唯一值,如:

在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中的“assign”行

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

$("#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);
});
如果我将布尔选中状态传递给上面的“assign”,那么checkedNames变量中得到的只是一个True/False或Yes/No值列表,而不是实际值


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

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

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

更新 例如,我想集成到我的网格中,因此在服务器上的控制器中(我使用的是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()
        });
现在在我的gridComplete中,我可以使用jQuery使用
.sparkcell
选择器执行我需要的任何操作:

...
gridComplete: function () {
    $('.sparkcell').sparkline();
},
...

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

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

更新 例如,我想集成到我的网格中,因此在服务器上的控制器中(我使用的是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()
        });
现在在我的gridComplete中,我可以使用jQuery使用
.sparkcell
选择器执行我需要的任何操作:

...
gridComplete: function () {
    $('.sparkcell').sparkline();
},
...

保罗,谢谢你的建议。你能给我一段代码吗?你是怎么做到的?我知道了总体概念,但我不知道如何实际实施。谢谢保罗。看来应该行得通。我将尝试根据我的需求定制一个类似的解决方案,看看它是否适合我。Paul,谢谢你的建议。你能给我一段代码吗?你是怎么做到的?我知道了总体概念,但我不知道如何实际实施。谢谢保罗。看来应该行得通。我将尝试根据我的需求定制一个类似的解决方案,看看它是否适合我。