2016-03-29 18 views
0

私のページにはjqGridsが複数あります。これらは動的に作成されました。行のクリックからグリッドのキャプションを取得したい私はsetCaptionメソッドを参照していますが、getCaptionはありません。この価値を得る良い方法があるかどうか疑問に思っていましたか?jqGrid - 現在のグリッドのキャプションを取得する方法は?

私はSOや外では何の役に立つリンクも見つかりませんでした。助けをお待ちしています。

UPDATE:オレグのソリューション@

は、問題を修正するために私を助け、グリッド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 ")'を書きました。別の変数に1つのグリッドへの参照がある場合、 '$("#grid1 ")'の代わりに変数を使うことができます。ページ上のすべてのjqGridからキャプションを取得する必要がある場合は、問題ありません。あなたがしていることと必要なものを明確に定式化する必要があります。 – Oleg

+0

ありがとうオレグ。あなたは私を熱心に考えさせ、私はクリックイベントからIDを取得することができました。このコード行は、グリッドIDを決定します。var grid = "#" + $(e.target).closest( "table")。attr( "id"); '。そして、それはちょうど働いた。他の人のために私はコード(私が前にやっていたはずだった)と解決策も加えました。 –