2016-03-29 45 views
0

我的页面上有一个以上的jqGrids。这些是动态创建的。我想从行单击中获取网格的标题。我看到setCaption方法,但没有getCaption。所以想知道是否有一个很好的方法来获得这个值?jqGrid - 如何获取当前网格的标题?

我在SO或外部没有找到任何有用的链接。感谢任何帮助。

UPDATE:

@ Oleg的解决方案帮我解决这个问题,就如何找到网格ID的评论使我重新思考我的问题,并得到了解决:

zLoadLabResult()产生动态网格。当用户点击复选框时,我想知道我正在构建的其他一些逻辑的网格标题。

function zLoadLabResults(fulldata) { 
    fulldata = $.parseJSON(fulldata); 
    $.each(fulldata, function (i, item) { 
     var data = item.resultData; 
     var colNames = item.colNames; 

     var colModelsArray = []; 
     for (var i = 0; i < colNames.length; i++) { 
      var str; 
      if (i === 0) { 
       str = { 
        name: 'id', 
        width: 25, 
        editoptions: { value: "True:False" }, 
        editrules: { required: true }, 
        edittype: 'checkbox', 
        formatter: zCheckboxFormatter, 
        formatoptions: { disabled: false }, 
        editable: true, 
        sortable: false 
       }; 
      } else { 
       str = { 
        name: colNames[i], 
        index: colNames[i], 
        width: '100px' 
       }; 
      } 
      colModelsArray.push(str); 
     } 

     var gridName = "grid-" + item.testName; 
     $("#gridcontainer").append("<table id='grid-" + item.testName + "' class='grid'></table>"); 

     $("#" + gridName).jqGrid({ 
      //url: "user.json", 
      //datatype: "json", 
      datatype: "local", 
      colNames: colNames, 
      colModel: colModelsArray, 
      height: "auto", 
      width: "auto", 
      caption: item.testName 
     }); 

     var names = colNames; 
     var mydata = []; 

     for (var i = 0; i < data.length; i++) { 
      mydata[i] = {}; 
      for (var j = 0; j < data[i].length; j++) { 
       mydata[i][names[j]] = data[i][j]; 
      } 
     } 

     for (var i = 0; i <= mydata.length; i++) { 
      $("#" + gridName).jqGrid('addRowData', i + 1, mydata[i]); 
     } 
     for (var i = 0; i <= colNames.length; i++) { 
      $("#" + gridName).jqGrid("setLabel", colNames[i], "", { "text-align": "left" }); 
     } 
    }); 
}; 

function zCheckboxFormatter(cellvalue, options, rowObject) { 
    return '<input type="checkbox" class="selectedId" name="Id-' + cellvalue + '">'; 
}; 

我钩住复选框下面的事件,通过增加奥列格的解决方案的伎俩:

$('table[id^="grid-"]').on("click", "td > input", function (e) { 
    var grid = "#" + $(e.target).closest("table").attr("id"); 
    var caption = $(grid).jqGrid("getGridParam", "caption"); 

    var checked = $(e.target).is(":checked") 

    var rowId = $(e.target).closest("tr").attr("id") 
    rowData = $(grid).getRowData(rowId);   
}); 

回答

2

如果你不做出格字幕的内容的任何手动操作,那么你只每个网格使用caption选项。您可以使用getGridParam得到各网格的标题:

var caption1 = $("#grid1").jqGrid("getGridParam", "caption"); 

如果您要访问的低级别的标题,那么你可以使用下面的

var caption1 = $($("#grid1")[0].grid.cDiv).children("span.ui-jqgrid-title").html(); 
+0

但'#grid1'是动态的,对我来说。它在运行时生成。我只知道我选择的那一行。我错过了什么吗? –

+0

@SriReddy:你能发表一些你使用的代码片段吗?声明“我只知道我选择的行。”可以用很多方式解释,而且每个网格都保存单独的选定行列表。我写了'$(“#grid1”)'指向一个特定的网格,你想从中获得标题。如果你在另一个变量中引用一个网格,那么你可以使用变量而不是'$(“#grid1”)'。如果需要从页面上的所有jqGrids获取标题,这也不成问题。你只需要明确你所做的和你需要的东西。 – Oleg

+0

谢谢奥列格。你让我觉得很努力,并且能够从我的点击事件中获得ID。这一行代码确定了网格ID:'var grid =“#”+ $(e.target).closest(“table”)。attr(“id”);'。而且,它只是工作。对于其他人,我已经添加了代码(我应该先完成)以及解决方案。 –