1

jqGrid を使用して、JavaScript オブジェクトの配列を表示しています。表示したい値の 1 つは、オブジェクトのプロパティではなく関数です。以下の例では、配達日と期日の差を計算し、適時性の値を返す関数である「timeliness()」を除いて、すべての値がプロパティです。

$("#list").jqGrid({
  datatype: 'local',
  data: assignments,
  colNames: ['Project', 'Date Due', 'Date Delivered', "Timeliness"],
  colModel: [
    {name: 'project.title', index: 'project.title', width: 100}, 
    {name: 'title', index: 'title', width: 250}, 
    {name: 'dueDate',index: 'dueDate', width: 100},
    {name: 'deliveryDate', index: 'deliveryDate', width: 100},
    {name: 'timeliness()', index: 'timeliness()', width: 100}
  ],
  sortname: 'Project',
  rowNum: 10000,
  sortorder: 'asc',
  viewrecords: true,
  loadonce: true,
  gridview: true,
  height: 'auto',
  caption: 'Projects'
});

示されているように試してみましたが、関数が呼び出されず、値が返されません。括弧なしで試してみました(例:名前:適時性)が、期待どおり関数定義を返します。

フォーマッタの使用は機能しますが、列を並べ替えることができません (これは、ユーザーが並べ替えたい列です)。この問題を回避するために私が考えた別の方法は、単にこのオブジェクトの新しいプロパティを作成し、それをグリッドに配信して表示する直前にすべてのオブジェクトに設定することです (グリッドに入ると、値は期待できません)変更する)。jqGridでこれが可能かどうかを知りたいだけで、このフィールドを正しく処理していないだけかもしれません。

4

1 に答える 1

0

この問題を回避するために私が考えた別の方法は、単にこのオブジェクトの新しいプロパティを作成し、それを表示するグリッドに配信する直前にすべてのオブジェクトに設定することです (グリッドに入ると、値は期待できません)変更する)

これが最も簡単な解決策です。jqGrid はさまざまな種類のデータ ソースを処理するように設計されており、それらのほとんどは、関数を適用できない外部ソース (XML や JSON など) からのデータを含むことに注意してください。

于 2012-08-31T14:11:31.370 に答える