2009-12-18 6 views
3

Я создаю webapp используя jQuery и jQuery UI. Я в тупике. Мне нужна сетка jQuery, которая имеет редактируемые поля и каким-то образом включает поле автозаполнения в одной из этих редактируемых ячеек, и я не могу найти какие-либо предложения сетки, которые реализуют это.jQuery Сетка с автозаполнением

Я смотрел на StickGrid и jgGrid

мне особенно нравится jqGrid, поскольку она ThemeRoller готова. Кто-нибудь знает, смог ли кто-нибудь успешно интегрировать автозаполнение на одной из этих сеток или любую другую сетку jquery?

ответ

4

Я думаю, что вы хотите быть достижимым довольно легко. Я сделал вам быструю копию-вставку/кражу вместе.

Если вы щелкнете по столбцу «Дата», вы получите селектор календаря.

Если вы щелкнете столбец «Клиент» и удалите контент, вы увидите автозапуск (css не соответствует быстрому), в котором перечислены американские города (я знаю, что города не являются именами клиентов просто демо).

Код взят из jqGrid Cell Редактирование демо страницы + jQuery Autocomplete демонстрационную страницу

http://jsbin.com/owatu (добавить /edit к URL, чтобы увидеть код)

Конечно демо немного грубо вокруг краев

  • css проблемы
  • быстрый взлом в afterSaveCell, вставленный, чтобы получить jQgrid, чтобы вставить выбранное значение из автозаполнения er, если пользователь использует клавиши со стрелками + вводит ключ с помощью мыши, он работает без взлома

Я предполагаю, что хакер AfterSaveCell может быть удален при чистой интеграции автозаполнения и jqGrid друг с другом.

В основном это сводится к

jQuery("#celltbl").jqGrid({ 
    ... 
    {name:'name', width:100, editable:true}, //e.g. 
    ... 
    afterEditCell: function (id,name,val,iRow,iCol) { 
     if(name=='name') { 
      //cities here is local json object 
      jQuery("#"+iRow+"_name","#celltbl").autocomplete(cities); 
     } 
    }, 
    afterSaveCell : function(rowid,name,val,iRow,iCol) { 
     if(name == 'name') { 
      jQuery("#celltbl").jqGrid('setRowData',rowid,{name:jQuery(".ac_over").text()}); 
      jQuery(".ac_results").remove(); 
     } 
    } 
    ... 
+0

Это именно то, что я искал. благодаря! –

+0

Спасибо. Я действительно искал что-то подобное. – Jack7

0

Я не реализовал автозаполнение, но я работал с jqGrid и имеет огромную поддержку javascript-событий.

Например: Если поместить идентификатор в одной из ячеек и хотят автоматическое заполнение данных в других ячейках и можно использовать afterEditCell где и указать пользовательскую функцию, которая будет получать ROWID, CellName, значение, IRow, iCol и проверьте, является ли iRow той же строкой, что и ваш идентификатор, принять это значение и заполнить другие ячейки на основе этого значения. - в основном автоматическое завершение

Или можно использовать событие beforeEditCell и создать свою собственную функцию, которая получит значение rowid, cellname, value, iRow, iCol и результат возврата будет помещен в ячейку.

проверка из событий раздела http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing

удачи!

+0

Это интересно и пригодится, если я в конечном итоге с помощью jqGrid, но я думаю, что я не заставляю себя совершенно ясно.То, что я ищу, больше похоже на раскрывающийся список, выходящий из редактируемой ячейки, заполненной элементами, которые начинаются с текста, который был набран до этого момента, и пользователь может щелкнуть один из элементов в раскрывающемся списке, и поэтому поле будет автозаполнения. Не успел посмотреть код, но может ли что-то подобное быть адаптировано в jqGrid? –

+0

Я думаю, что это выполнимо, и вам нужно будет прикрепить событие jquery onkeyup к объекту ячейки, который вызывает веб-сервис при каждом нажатии клавиши. Задача будет заключаться в том, как получить этот объект из beforeEditCell, cus только отправляет rowid, cellname, value, iRow, iCol ... потребуется некоторая умная jquery – Sergey

Смежные вопросы