1

Groupings で SlickGrid を使用しており、各グループ内のデータを並べ替える必要がありますが、Grouping (グループ ヘッダー行) はデフォルトの順序のままにします。

並べ替えは、列データを並べ替えてから、データごとにグループ化ヘッダーを並べ替えているようです。
誰かがこれを行ったことがありますか、またはオプション/パラメーターが正しく設定されていませんか?

ありがとう

4

3 に答える 3

2

グループ化+ソートの例を次に示します。並べ替えたいときは、グループ化している列に対して並べ替えを行うことに注意してください。列によるグループ化でない限り、他の列と並べ替えることはできませんそれと)

<select id="slc_groupby" name="slc_groupby" onchange="groupByColumn(this.value)">
    <option value="">...</option>
    <option value="assy_number">Assy Number</option>
</select>
<span id="span_group_btn" style="position:absolute; display:none; margin-left:5px; margin-top:20px;">
    <!-- Group sorting, I show this button only after a grouping column is chosen  -->
    <img src="/images/b_updownarrow2.gif" id="img_sorting" border="0" onclick="groupByColumn( $('#slc_groupby').val() )" />
</span>

ここにグループ化+ソート用のjavascript関数があります。ソートボタン(html ID = img_sortingの一番上のボタン)をクリックするたびに、groupByColumn()関数を介して再グループ化および再ソートの効果があることに注意してください(私がm onclick イベントを使用して)、非常に高速に発生するため、グループ化が再び行われることは実際にはわかりません...しかし、それがすべてのブラウザー (Chrome を含む) で動作するようにした方法です。

function groupByColumn(column) {
    // sorting direction, if undefined just inverse the current direction of the global sortdir var (sortdir is defined as global variable in slickgrid)
    sortdir = ((sortdir == 1) ? -1 : 1);

    dataView1.groupBy(
        column,
        function (g) {
            return g.value + "  <span style='color:green'>(" + g.count + " items)</span>";
        },
        function (a, b) {
            var a1 = a.value;
            var b1 = b.value;

            // string sorting
            return sortdir * (a1 == b1 ? 0 : (a1 > b1 ? 1 : -1));
        }
    );

    // display the button for group sorting
    $('#span_group_btn').css("display", "inline");
}
于 2013-03-29T18:21:33.977 に答える