Kendo UI Grid を使用して、競技用のスコアボードを作成しています。My DataSource は、チーム名とそれに関連するランキングのリストをデータベースから受け取ります。したがって、各 JSON オブジェクトには、チーム名とそのチームのランキングが含まれます。ランキングは単純な整数です。
例として、4 つのチームがあり、それぞれの順位が 1、2、3、3 であるとします。つまり、2 つのチームが 3 位で並んでいます。Kendo UI グリッドの私の要件は次のとおりです。
- 同順位の提示されたランキングには、ランキングの前に「T」が必要です。これを達成するためにいくつかのJavascriptを書きました: http://jsfiddle.net/mwassmer/4FXdc/
- グリッドのランキング列は並べ替え可能である必要があります。したがって、グリッド列の「フィールド」プロパティは、「T」との関係を示すランキングの「プレゼンテーション」バージョンではなく、DataSource の元のランキング列を参照する必要があると想定しています。
Javascript の「関係」コードを組み込むには、列テンプレートを使用する必要があると思いますが、その方法がわかりません。以前に列テンプレートをうまく使用したことがありますが、これは好きではありません。
タイの「T」インジケーターを追加するためのデモ Javascript コードを以下に示します。グリッド列テンプレートが最適であると仮定すると、このコードをテンプレートに組み込む方法について混乱しています。
$(function () {
var ranks = [1,2,3,3];
var counts = {};
for(var i = 0; i< ranks.length; i++) {
var num = ranks[i];
counts[num] = counts[num] ? counts[num]+1 : 1;
}
$.each(ranks, function(index, value) {
if (counts[value] == 1)
{
$("#ranksTies").append("<li>" + value + "</li>");
}
else
{
$("#ranksTies").append("<li>T" + value + "</li>");
}
});
});