データのテーブルを表示するために、dgrid 0.3.2 と JsonRest を使用しています。最近、dgrid 0.3.6 または 0.3.7 へのアップグレードを検討しています。ほとんど同じように動作しますが、新しいバージョンの dgrid では、ユーザーが列ヘッダーをクリックして十分に速く並べ替えると、グリッドに重複した行が表示され始めるようです。応答の JSON と範囲が正しいことを確認しました。これは、dgrid 0.3.2 を使用したときに発生しなかったようです。
問題を再現し、グリッドとストアのセットアップ方法を模倣する簡単なテスト ケースを次に示します。私は何か間違ったことをしていますか?JsonRest をキャッシュにラップしない場合、この問題は発生しないため、問題があることは確かですが、JSON 応答をキャッシュしないことによるパフォーマンスへの影響についてはわかりません。
<!doctype html>
<html>
<head>
<%
String dgridVer = request.getParameter("dgridVer");
if (dgridVer==null) { dgridVer = "0.3.6"; }
%>
<script type="text/javascript">
var dojoConfig = {
isDebug: true,
baseUrl: 'dojo',
packages: [
{ name: 'dojo', location: 'dojo' },
{ name: 'dijit', location: 'dijit' },
{ name: 'dojox', location: 'dojox' },
{ name: 'dgrid', location: 'dgrid-<%=dgridVer%>' },
{ name: 'put-selector', location: 'put-selector' },
{ name: 'xstyle', location: 'xstyle' },
{ name: 'datagrid', location: '../datagrid' }
]
};
</script>
<script src="dojo/dojo/dojo.js"></script>
</head>
<body>
Try sorting a column as fast as you can. Look for duplicated rows.<br>
Using dgrid version: <%=dgridVer %><p>
<div id='gridDiv'></div>
<script>
require(['dgrid/Grid', 'dgrid/extensions/Pagination', 'dojo/store/JsonRest',
'dojo/store/Cache', 'dojo/store/Memory', 'dojo/_base/declare', 'dojo/domReady!'],
function(Grid, Pagination, JsonRest,
Cache, Memory, declare) {
var columns = [
{ field: "first", label: "First Name" },
{ field: "last", label: "Last Name" },
{ field: "age", label: "Age" }
];
var store = new JsonRest({
target: 'testData.jsp',
sortParam: "sortBy"
});
store = Cache(store, Memory());
var grid = new (declare([Grid, Pagination]))({
columns: columns,
store: store,
loadingMessage: 'Loading...',
rowsPerPage: 4,
firstLastArrows: true
}, 'gridDiv');
});
</script>
</body>
</html>