Я использую dgrid 0.3.2 вместе с JsonRest для отображения таблиц данных. Недавно я рассматривал обновление до dgrid 0.3.6 или 0.3.7. Вещи работают в основном одинаково, но, похоже, с более новыми версиями dgrid, если пользователь щелкает заголовок столбца для сортировки достаточно быстро, сетка начнет отображать повторяющиеся строки. Я проверил, что ответ JSON и диапазон верны, и это, похоже, не произошло, когда мы использовали dgrid 0.3.2.Дублированные строки при сортировке dgrid 0.3.6
Вот простой тестовый пример, который воспроизводит проблему и имитирует, как мы настраиваем нашу сетку и сохраняем ее. Я делаю что-то неправильно? Если я не завершу 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>
Извините, мне потребовалось столько времени, чтобы ответить. Спасибо за ответ, и вы думали, о чем я думал. Я не мог понять, что изменилось в коде dgrid, но изолировало его до 0,3,5, когда это поведение изменилось. Я создал [выпуск 635] (https://github.com/SitePen/dgrid/issues/635) и упомянул обходное решение, которое я придумал, - просто отключив сортировку столбцов, пока сортировка выполняется. –