2016-04-15 9 views
1

free-jqGridグリッドビューの別のインスタンスのリフレッシュをトリガするために、ツリーグリッドリーフノードのクリックイベントを取得しようとしています。私はfree-jqGrid 4.13.2を使用しています。私はtreegridのソースコードを見てきましたが、リーフノードがクリックされたときに起動する関数はありません。free-jqgridツリーグリッドリーフノードのクリックイベント

私はグリッドビューをリフレッシュするonclickイベントでcellvalueをdivに置き換え、カスタムフォーマッタをgridviewで使用しようとしました。それは初めて(グリッドビューをリフレッシュする)動作しますが、それ以降は表示されません。グリッドビューツールバーのアイコンは、ツリーグリッドリーフノードのクリックごとに複製されます。

答えて

1

Tree jqGridにはTreeGridノードのコールバックが多数ありますが、リーフはデータのある単純な行として解釈されます。したがって、必要なクリックを検出するには、beforeSelectRow,onCellSelectまたはonSelectRowを使用する必要があります。コールバックには最初のパラメータとしてrowidがあり、getLocalRowを使用してrowidに基づいて行のデータを取得できます。対応するコードは非常にシンプルになります:

beforeSelectRow: function (rowid, e) { 
    var item = $(this).jqGrid("getLocalRow", rowid); 

    if (item != null && item.isLeaf) { 
     alert("The row with leaf \"" + item.name + "\" is clicked"); 
    } 
    return true; // allow row selection 
} 

The demoはコードを示しています。 e.targetを使用すると、クリックしたセルに関するより正確な情報を取得できます。たとえば$(e.target).closest("tr.jqgrow>td")はクリックされた<td>セルのDOM要素へのjQueryラッパーを取得します。

+0

ありがとうOleg!私はTreeとGrid jqGridの間の接続については考えなかったと思います。それは今意味があり、私はそれを覚えています。 –

+0

@JerryP:ようこそ! – Oleg

+0

ngclickイベントをグリッドセルで定義できるので、複数のグリッドを使用している場合、別のプロパティを必要とする場合は警告の代わりにexの各グリッドごとに異なる動作をする必要があります – shv22

関連する問題