Dojo Grid отказывается сортировать по дате.Как заставить это работать? - PullRequest
0 голосов
/ 12 октября 2011

У меня есть Dojo Grid со столбцом даты. Несмотря на использование пользовательского форматера, он всегда выполняет сортировку строк. Обратите внимание, что мои входящие даты будут отформатированы как 17.02.2005, и я не могу их изменить.

formatDate = function(d){
return dojo.date.locale.format(new Date(d), {datePattern: "M/dd/yyyy", formatLength: 'short', selector: "date"});
}

var myData= [
{field: "transactionDate", name: "Transaction Date", width: "115px", datatype: "date", formatter: formatDate  },
{field: "description", name: "Transaction Description", width: "170px" },
]];

var storeData = {
items: [
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"02/15/2010",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"01/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"09/15/2009",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
  ,
  {
  transactionDate:"04/15/2011",
  description:"A description of the transaction"
  }
]};

 <div class="claro" style="width: 835px; height: 300px;">
    <div dojotype="dojo.data.ItemFileReadStore" jsID="dataStoreForGrid" data="storeData"></div>
    <div id="grid" dojotype="dojox.grid.DataGrid" store="transferStoreForGrid" clientSort="true" jsID="SomeId" structure="myData" rowsperpage="40" ></div>
  </div>

По предложению Пеллера, я пытался форматировать как дату ISO. Тайцы никак не повлияли на сортировку:

    formatDate = function(d){
var d2 = dojo.date.stamp.fromISOString(ISODateString(new Date(d)));
return dojo.date.locale.format(d2, {selector: 'date', formatLength: 'long'});
}

function ISODateString(d) {
function pad(n){
return n&lt;10 ? '0'+n : n
}
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z'
}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2011

тонкий, вам нужен WriteStore, а не ReadStore

0 голосов
/ 13 октября 2011

Взгляните на пример в документации . Я думаю, что вы просто должны использовать формат ISO для даты (гггг-мм-дд), что в общем случае является хорошей практикой в ​​любом случае. Вы также можете передавать нативные объекты Date, но строки, очевидно, более переносимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...