2016-04-01 24 views
1

私はthis answerからコードを取得しました。可能性があるかどうかを確認するために、最初の画像のようにしています(JavaScript、HTML、CSSなど)。jqGridサブグリッドの列をカスタマイズする

これは今までの私の進歩です。 は、私は、ヘッダーに詳細のテキストを置く:

$("#list_subgrid").append("Details").css('width', '100px'); 

は、私が最初の列の幅を変更:

$(".jqgfirstrow").find("td:first").css({"height":"0px", "width":"100px"}); 

私はすべての場所での要素の束の幅を変更した場合、私は3枚目の画像をもたらすために取得することができ、それが正しい方法であるかどうかはわかりません。私は水平スクロールバーを取り除くことはできません。

詳細テキストをプラス記号ではなく最初の列のすべてのセルに入れる方法はわかりませんが、プラス記号はそこにとどまることができます。

そして、どのように最後の代わりに、最初になるように、「サブグリッド」欄を切り替えるためには、私が何年も前に、あなたは一例として使用する答えを、書いた...完全に私の知識を超えて

enter image description here

+0

あなたはあなたのJavaScriptコードを投稿する必要があります。 [グリッドとしてのサブグリッド](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:subgrid_as_grid)または[レガシーサブグリッド](http://www.trirand.com/jqgridwiki/doku .php?id = wiki:subgrid) 'subGridRowExpanded'コールバックの実装なし?グリッドとしてのサブグリッド( 'subGridRowExpanded')は最大の柔軟性を提供します。どのバージョンのjqGridを使用していますか([free jqGrid](https://github.com/free-jqgrid/jqGrid)、[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)古いバージョンのjqGridはバージョン4.7以下)?無料のjqGridを使用すると、任意の場所に任意の列を配置できます。 – Oleg

+0

私はこの回答からコードを取ってhttp://stackoverflow.com/a/10178440/6144040そしてそれを理解しようとします。グリッドとしてのサブグリッドと、それは無料のjqGriddの最後のバージョンです。 – Roman

+0

一度に1つの質問をする必要があります。現在の質問は好きです。 subgridに存在するすべてのカスタマイズの可能性についての本を書いてください。 1つの問題についてのみ1つの質問をする必要があります。 stackoverflowの目的は、多くの読者に共通の情報を提供することです。人々はいくつかの単語を検索し、*特定の問題*の答えを見つけることができるはずです。そのスタックオーバーフローのために、質問を書くためのいくつかのルールがあります。ルールからの1つ:交換可能な質問はありません。別のルール:現在の試行/コードを投稿し、誰かにあなたの仕事の100%を依頼するだけではありません。 – Oleg

答えて

0

です。今、私はちょうどdetails財産以下のように、行のメインデータとともにサブグリッドデータを配置するでしょう:

var myGridData = [ 
     // main grid data 
     {id: "10", col1: "11", col2: "12", details: [ 
      // data for subgrid for the id=10 
      {id: "10", c1: "aa", c2: "ab", c3: "ac"}, 
      {id: "20", c1: "ba", c2: "bb", c3: "bc"}, 
      {id: "30", c1: "ca", c2: "cb", c3: "cc"} 
     ]}, 
     {id: "20", col1: "21", col2: "22", details: [ 
      // data for subgrid for the id=20 
      {id: "10", c1: "xx", c2: "xy", c3: "xz"} 
     ]} 
    ]; 

式は、データの項目を取得$(this).jqGrid("getLocalRow", rowid)$(this).jqGrid("getLocalRow", rowid).detailsは、行のサブグリッドデータです。結果として、the demoのような元の例を書き換えることができます。

は、我々が details

var details = "<span class='fa fa-fw fa-plus'></span>&nbsp;" + 
        "<span class='mylink'>Details</span>"; 

のような例のために定義される単純なフォーマッタを

formatter: function() { 
    return details; 
} 

使用することができます固定テキストDetailsの列を持っていると定義され、クラスmylink(私はFont Awesomeアイコンを使用しました)

ここでは、 "subgrid"カラムを非表示にして、または-というアイコンで隠しセルのclickイベントのシミュレーションによってサブグリッドを開いたり閉じたりできます。次のフルコードを受け取ります

var myGridData = [ 
     // main grid data 
     {id: "10", col1: "11", col2: "12", details: [ 
      // data for subgrid for the id=10 
      {id: "10", c1: "aa", c2: "ab", c3: "ac"}, 
      {id: "20", c1: "ba", c2: "bb", c3: "bc"}, 
      {id: "30", c1: "ca", c2: "cb", c3: "cc"} 
     ]}, 
     {id: "20", col1: "21", col2: "22", details: [ 
      // data for subgrid for the id=20 
      {id: "10", c1: "xx", c2: "xy", c3: "xz"} 
     ]} 
    ], 
    $grid = $("#list"), 
    details = "<span class='fa fa-fw fa-plus'></span>&nbsp;" + 
       "<span class='mylink'>Details</span>"; 

$grid.jqGrid({ 
    data: myGridData, 
    colModel: [ 
     { name: "col1", label: "Column 1" }, 
     { name: "col2", label: "Column 2" }, 
     { name: "details", label: "Details", 
      align: "center", width: 70, 
      formatter: function() { 
       return details; 
      } } 
    ], 
    cmTemplate: { width: 200 }, 
    iconSet: "fontAwesome", 
    autoencode: true, 
    sortname: "col1", 
    sortorder: "desc", 
    pager: true, 
    caption: "Demonstrate how to create subgrid from local data", 
    beforeSelectRow: function (rowid, e) { 
     var $self = $(this), 
      p = $self.jqGrid("getGridParam"), 
      $td = $(e.target).closest("tr.jqgrow>td"), 
      cm = $td.length > 0 ? p.colModel[$td[0].cellIndex] : null, 
      cmName = cm != null ? cm.name : null; 
     if (cmName === "details") { 
      // simulate opening the subgrid 
      $($td.parent()[0].cells[p.iColByName.subgrid]).click(); 
      // inverse +/- 
      var $plusMinus = $td.find("span.fa"); 
      if ($plusMinus.hasClass("fa-minus")) { 
       $plusMinus.removeClass("fa-minus").addClass("fa-plus"); 
      } else { 
       $plusMinus.removeClass("fa-plus").addClass("fa-minus"); 
      } 
     } 

     return true; 
    }, 
    subGrid: true, 
    subGridRowExpanded: function (subgridDivId, rowid) { 
     var $subgrid = $("<table id='" + subgridDivId + "_t'></table>"), 
      $subgridDiv = $("#" + subgridDivId), 
      subgridData = $(this).jqGrid("getLocalRow", rowid).details; 

     $subgridDiv.closest(".subgrid-data").prev(".subgrid-cell").remove(); 
     var colspan = $subgridDiv.closest(".subgrid-data").attr("colspan"); 
     $subgridDiv.closest(".subgrid-data").attr("colspan", parseInt(colspan, 10) + 1); 
     $subgridDiv.append($subgrid); 
     $subgrid.jqGrid({ 
      idPrefix: rowid + "_", 
      data: subgridData, 
      colModel: [ 
       { name: "c1", label: "Col 1" }, 
       { name: "c2", label: "Col 2" }, 
       { name: "c3", label: "Col 3" } 
      ], 
      iconSet: "fontAwesome", 
      autowidth: true, 
      autoencode: true, 
      sortname: "c1" 
     }); 
     $subgrid.jqGrid("setGridWidth", $subgridDiv.width() - 1); 
    } 
}).jqGrid("hideCol", "subgrid"); 

対応するデモはhereです。 「+のdetailes」のクリックした後一つは以下のように表示されます。

enter image description here

+0

ああ、基本的にサブグリッドの書式は設定しませんが、代わりに通常の列(この例ではDetailsと呼ばれます)を追加して書式を設定し、サブグリッド列の動作をシミュレートします。素晴らしい解決策、私はそれを自分で決して決してわかりません。 – Roman

関連する問題