各行に列があり、データベースの内容に応じて表示結果をフォーマットし、データベースにdiv
応じて背景色を作成するフォーマッターを定義したデータグリッドがあります。
データグリッドには次の構造があります。
structure: [
{
name: "Name",
field: "name",
width: "auto"
},
{
name: "Initials",
field: "initials"
},
{
name: "E-mail",
field: "email",
width: "auto"
},
{
name: "Kerberos",
field: "kerberos",
width: "120px",
formatter: function(kerberos){
var format = "";
if(kerberos == "password expired" || kerberos == "account expired"){
format = '<div class="yellow" title="'+kerberos+'">'+kerberos+'</div>';
}else if(kerberos == "ok"){
format = '<div class="green" title="'+kerberos+'">'+kerberos+'</div>';
}else{
format = '<div class="red" title="Has no kerberos account">not available</div>';
}
return format;
}
},
列ヘッダーを押して並べ替えると、行が並べ替えられ、一貫性がないため、正しく並べ替えられるかどうかわかりません (下の画像を参照)。データグリッドがこの列をソートする方法を定義するにはどうすればよいですか?
<div...>
文字のためにフォーマッタで行うHTML部分だと思っていました<>
が、テキストを出力するだけだとまだ奇妙にソートされます(私の理解では、アルファベット順にソートする必要があります)。なぜこれが起こるのか、どうすれば修正できるのか誰か知っていますか?
編集: データの取得/割り当て方法を追加するのを忘れていました。JSON形式のxhr.postから多くのデータを取得し、次のようにします:
dojo.xhr.post({
url: "/cgi-bin/users.cgi",
handleAs: "json",
content: {
psearch: "dojoXhrBlank"
},
load: function(jsondata){
// Creating a store for the datagrid
var personStore = new Memory({ data: jsondata });
// Create datastore for datagrid
var gridStore = ObjectStore({objectStore: personStore});
...