Есть ли способ добавить новую строку в slickgrid по запросу? Например, при нажатии кнопки на странице отображается новая строка.Slickgrid добавить новую строку по запросу
ответ
Вы всегда можете добавить новые строки в сетку. Все, что вам нужно сделать, это добавить объект данных для строки в данные сетки.
Предположим, вы создали свою сетку из источника данных - myGridData
(представляющий собой массив объектов). Просто нажмите новый объект строки на этот массив. Вызовите метод invalidate
на сетке.
Готово :)
Это можно легко сделать с помощью dataView.addItem (PARAMS), просто замените Params с вашими параметрами ..
function addNewRow(){
var item = { "id": "new_" + (Math.round(Math.random() * 10000)), "Controller": tempcont, "SrNo1": tempsrno };
dataView.addItem(item);
}
здесь идентификатор, контроллер, SrNo1 являются идентификаторами colunm
Помимо создания новой строки, мне нужно было ее показать, чтобы пользователь мог начать писать на ней. Я использую пагинацию, так вот что я сделал:
//get pagination info
var pageInfo = dataView.getPagingInfo();
//add new row
dataView.addItem({id: pageInfo.totalRows});
//got to last page
dataView.setPagingOptions({pageNum: pageInfo.totalPages});
//got to first cell of new row
var aux = totalRows/ pageInfo.pageSize;
var row = Math.round((aux - Math.floor(aux)) * pageInfo.pageSize, 0);
grid.gotoCell(row, 0 ,true);
Перед тем, как использовать нумерацию страниц, мне просто нужно это:
var newId = dataView.getLength();
dataView.addItem({id: newId});
grid.gotoCell(newId, 0 ,true);
var newRow = {col1: "col1", col2: "col2"};
var rowData = grid.getData();
rowData.splice(0, 0, newRow);
grid.setData(rowData);
grid.render();
grid.scrollRowIntoView(0, false);
работает нормально для меня.
Вы можете добавить строку динамически, например, щелчком кнопки, подписав прослушиватель onAddNewRow на объект сетки. Как было предложено многими, лучше всего использовать dataView plugin для взаимодействия с вашими данными. Обратите внимание, что вам нужно, чтобы опция enableAddRow была установлена как "true".
Во-первых, DataView требует установки уникальной строки «id» при добавлении новой строки. Лучший способ рассчитать это с помощью dataView.getLength(), который даст вам количество строк, которые в настоящее время существуют в вашей сетке (которые мы будем использовать в качестве идентификатора для новой строки). Функция DataView addItem ожидает объект item. Таким образом, мы создаем пустой объект item и добавляем к нему id.
Во-вторых, при добавлении данных вы будете фокусировать только одну ячейку. После того, как вы ввели эти данные (путем размытия этой ячейки), DataView заметит, что вы не ввели данные для любой из оставшихся ячеек в строке (конечно) и по умолчанию будут иметь значения «undefined». Это не является желательным эффектом. Итак, что вы можете сделать, это цикл через столбцы, которые вы явно задали, и добавить их к нашему объекту item со значением «" (пустая строка).
В-третьих, мы не хотим, чтобы все ячейки были пустыми. Фактически, мы хотим, чтобы введенные данные исходной ячейки отображались. У нас есть эти данные, поэтому мы можем установить его последним, чтобы он перезаписал ранее установленное значение «» (пустая строка).
Наконец, мы хотим обновить сетку таким образом, чтобы она отображала все эти изменения.
grid.onAddNewRow.subscribe(function (e, args) {
var input = args.item;
var col = Object.keys(input)[0]
var cellVal = input[Object.keys(input)[0]]
// firstly
var item = {};
item.id = dataView.getLength();
// secondly
$.each(columns, function(count, value) {
colName = value.name
console.log(colName)
item[colName] = ""
})
// thirdly
item[col] = cellVal
dataView.addItem(item);
// lastly
grid.invalidateRows(args.rows);
grid.updateRowCount();
grid.render();
grid.resizeCanvas();
});
Надеюсь, это поможет. Ура!
- 1. Добавить новую строку в SlickGrid
- 2. Добавить новую строку со значением по умолчанию
- 3. Добавить новую строку в строку
- 4. Rally Excel Добавить по запросу
- 5. Добавить информацию пользователя по запросу
- 6. Добавить новую строку в gridview
- 7. Добавить новую строку в подсказке
- 8. После разделения добавить новую строку
- 9. iggrid Добавить новую строку события
- 10. Добавить новую строку в r
- 11. Jquery JSON добавить новую строку
- 12. Wpf DataGrid Добавить новую строку
- 13. Как добавить новую строку/столбец
- 14. Добавить новую строку в файл?
- 15. StreamWriter: как добавить новую строку?
- 16. Добавить новую строку в переменной
- 17. C++ добавить новую строку datagridview
- 18. Ace.js Программно добавить новую строку
- 19. добавить новую строку метода объекта
- 20. Добавить новую строку в xtragrid
- 21. Добавить новую строку в gridview
- 22. Как добавить новую строку таблицы?
- 23. Добавить новую строку в ListView
- 24. Добавить новую строку в datagridview
- 25. Как добавить новую строку под строку font.DrawText?
- 26. Как добавить новую строку в строку bash?
- 27. R добавить новую строку в каждую строку
- 28. Как добавить в строку новую строку
- 29. JQuery datatable добавить новую строку по указанному индексу
- 30. Как добавить новую строку в ui-сетку по определенному индексу
Спасибо за ответ. В моем примере я хочу представить пользователю пустые ячейки для ввода. Я мог бы просто создать новый объект данных с пустыми свойствами и сделать недействительным, но я также хочу иметь возможность показывать только пустую строку при нажатии кнопки «Добавить новую строку».Я понимаю, что когда параметры сетки заданы для enableAddRow, всегда отображается пустая строка. Это так же просто, как обновление параметров сетки во время события клика кнопки «Добавить новую строку»? – user1347790