2011-12-06 14 views
0

私は、セルの中にテーブルがあるデータをロードした場合、onSelectRow()が呼び出され、$(grid).getRowData(rowid)が呼び出されたときにjQuery Grid(jqGrid)に問題があるようです。 。jqGrid - 内部にTD要素を持つセル

jqGridは、選択された行(指定されたセル内のテーブルの子であるものを含む)のすべてのTD要素を列挙しているようです。

これを行うか、jqGridがこれらの要素を列挙しないようにする適切な方法はありますか? :

EDIT:私の特別なケースでは、HTMLは必要になるまで隠されていたので、クライアントに送信されるまでTDを「xtd」に置き換えることができました。 HTMLを必要としましたが、 "xtd"を "td"に置き換えただけです。もっと良い方法があることを望みます。

EDIT:私は明確にしたい、私はプラグインを変更しない方法を望んでいます。よく書かれた変更は、まだいいだろう。

答えて

1

古いが、まだ解決されていない。

こんにちは。はいjqGridはインナーに問題がありますとtdですが、すばやく便利な修正があります。ファイルjquery.jqGrid.min(jqGrid 3.8.2 - jQueryグリッド)。ファイルをjs-beutifierに入れてください。または、縮小版を入手せずにgetRowDataの機能を見つけてください。次に、コードをb("td[id!='-1']", r).each(function (t) {に書き込むために、b("td", r).each(function (t) {を参照するために余分な条件を追加する必要があります。あなたの内側のテーブルには、<td id="-1">と宣言する必要があります。この場合、colModelで検索からあなたのtdを除外します。

コピー/このコードを貼り付け:あなたは、内部テーブルを置きたいと思う。最後

getRowData: function (f) { 
      var j = {}, 
       i, c = false, 
       e, k = 0; 
      this.each(function() { 
       var n = this, 
        a, r; 
       if (typeof f == "undefined") { 
        c = true; 
        i = []; 
        e = n.rows.length 
       } else { 
        r = n.rows.namedItem(f); 
        if (!r) return j; 
        e = 2 
       } 
       for (; k < e;) { 
        if (c) r = n.rows[k]; 
        if (b(r).hasClass("jqgrow")) { 
         b("td[id!='-1']", r).each(function (t) {//fix 
          a = n.p.colModel[t].name; 
          if (a !== "cb" && a !== "subgrid" && a !== "rn") if (n.p.treeGrid === true && a == n.p.ExpandColumn) j[a] = b.jgrid.htmlDecode(b("span:first", this).html()); 
          else try { 
           j[a] = b.unformat(this, { 
            rowId: r.id, 
            colModel: n.p.colModel[t] 
           }, t) 
          } catch (B) { 
           j[a] = b.jgrid.htmlDecode(b(this).html()) 
          } 
         }); 
         if (c) { 
          i.push(j); 
          j = {} 
         } 
        } 
        k++ 
       } 
      }); 
      return i ? i : j 
     } 

は、この操作を行います。もちろん

<table> 
    <tr> 
     <td id="-1"> 
      Now It's working! 
     </tr> 
     <td id="-1"> 
      Yeah 
     </tr> 
    </tr> 
</table> 

をあなたはid属性を変更することができますが、私は、HTML idでこの問題を解決するお勧めします属性はclass属性に対してjQueryのパフォーマンスが原因です。

+0

ありがとうございます! :)私は将来、これまたは類似のソリューションを使用します。私が以前持っていたものよりずっときれいです。 – aikeru

0

私が実装したもう1つのオプションがあります。代わりに、jqGrid core javascriptを操作する代わりに、テーブルを作成するCellにtdタグの代わりにthタグを使用してください。

私は同様の要件を満たしており、上記の実装(jqgrid.min.js操作)を進めました。しかし、何が起こるかは、取得しようとしているColumn#とCell#との不一致です。例えば、私は列のIDを正確にしていましたが、セルを動的に設定しなければなりませんでした。別のセルを編集/変更していました(セルの1つに余分なtdタグがあるため)。

私はセル内に作成しているカスタムテーブルのtdタグの代わりにthタグを使用しました。これまでのところ動作します。

関連する問題