Я работаю над проектом, в котором мне нужно использовать элемент управления Infragistics WebGrid для некоторых списков данных. Я загружаю данные на стороне клиента с помощью JavaScript для отображения на карте, а затем мне нужно отобразить те же данные в нескольких WebGrids. Все доступные данные будут отображаться в WebGrids, но только часть данных (только то, что в настоящее время находится в представлении) будет нанесена на карту в любой момент времени. Поскольку я загружаю данные с помощью JavaScript / Ajax, я хотел бы загрузить их только один раз и использовать тот же механизм для заполнения данными элемента управления WebGrid.
Есть ли у кого-нибудь советы / указатели по работе с WebGrid полностью из клиентского кода JavaScript / Ajax?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Единственная мысль, которая приходит в голову, связана с производительностью. Мы обнаружили, что динамическое создание и заполнение строк для UltraWebGrid происходит значительно медленнее, чем нам хотелось бы. (В нашем случае мы перемещали строки из одной сетки в другую и сталкивались с проблемами производительности, когда количество строк было слишком большим.)
Если бы я делал что-то вроде того, что вы описываете сегодня, я бы заполнял сетку со стороны сервера, если это вообще возможно, и отображал бы соответствующие значения на карте оттуда.
В качестве дополнительного заявления об отказе от ответственности мы использовали Infragistics 2007.1; Не знаю, лучше ли в этой области 2008.x.
В нашем случае пользователь мог бы выбрать элементы из «доступного списка» и щелкнуть кнопку, чтобы переместить их в «выбранный список». Для каждого выбранного элемента мы будем клонировать строку, чтобы добавить ее в выбранный список и удалить доступную строку. Когда было выбрано ~ 20 элементов, было быстрее сделать обратную передачу.
Веб-сети Infragistics предоставляют очень сложную объектную модель на стороне клиента, которую вы сможете использовать для заполнения данных на стороне клиента.
Первое, что вам нужно сделать, это взглянуть на полную CSOM для элемента управления webgrid, текущую версию документа вы можете найти по адресу: http://help.infragistics.com/NetAdvantage/NET/2008.3/CLR2.0/
Чтобы сделать короткий пример, вам нужно будет захватить ссылку на вашу сетку (сетки), а затем добавить несколько строк и данных. Вероятно, было бы проще настроить определения столбцов для ваших сеток во время разработки, чем пытаться делать все это в javascript.
Во-первых: получите ссылку на свою сетку:
var grid = igtbl_getGridById('dataGridControlID');
Затем добавьте новую строку:
var newRow = grid.Rows.addNew()
После этого вы можете зациклить столбцы своей строки, чтобы заполнить данные:
var oCols = newRow.Band.Columns;
for(var i=0; i < oCols.length; i++) {
newRow.getCell[i].setValue(yourValue)
}
или обратитесь к каждому по ключу, чтобы заполнить его данные:
newRow.getCellFromKey(colKey).setValue(yourValue,fireEvents);
Сколько строк было «слишком большим»? В какой момент вы заметили, что все стало слишком замедляться?