2014-01-15 5 views
2

Я нахожу страницу html/javascript с сеткой кендо с меню фильтра. Я столкнулся со следующей проблемой: когда я добавляю новый объект в источник данных (новую строку), и его kendogrid перезагружается (datasource.read), я теряю значения текстовых полей внутри меню фильтра, которые я вводил значения.Потерянные значения текстовых полей внутри меню фильтра

Вот демо: http://jsfiddle.net/3qT3J/2/

$("#grid").kendoGrid({ 
    dataSource: datasource1, 
    height: 300, 
    filterable: true // <== shows a button on each column that display a filter menu 

}); 
// reload the grid every 2 seconds: 
setInterval(function() { 
     datasource1.read(); 
}, 2000); 

Есть ли способ, чтобы заполнить текстовые поля еще раз, когда сетка перезагружается? как я могу получить значения, введенные пользователем? Есть ли какое-то свойство кендогрида, которое позволяет избежать потери значений при перезагрузке сетки?

Я думал получить значения с помощью прослушивателя событий в текстовых полях, но я не знаю, в каком столбце принадлежит текстовое поле ... Я добавил слушателя событий со следующим кодом: $ (". K- textbox "). on (« изменение клика », функция1);

Любая идея? Благодаря

+0

попробуйте создать демо (jsfiddle/jsbin/plnkr); dataSource.read() не удалит ваши фильтры –

+0

yes, dataSource.read() не удаляет мои фильтры, но удаляет то, что пользователь пишет в графическом интерфейсе. Когда пользователь открывает меню фильтра и начинает вводить некоторое значение, это значение очищается при вызове datasource.read(). Я вызываю dataSource.read() каждые 1 секунду. Благодарю вас, я напишу демо-версию и отправлю через несколько минут. – paulalopesfc

+0

Ларс, я добавил ссылку демонстрации в сообщении выше. Спасибо. – paulalopesfc

ответ

1

Вы можете приостановить перезагружает меню фильтр открыт, так что пользователь может закончить печатать:

setInterval(function() { 
    var pauseRefresh = $(".k-filter-menu:visible").length; 
    if (!pauseRefresh) { 
     datasource1.read(); 
    } 
}, 2000); 

(demo)

+0

В качестве обходного пути я остановился и перезапустил перезагрузку datagrid в клиенте mouseenter и прослушивании событий mouseleave в меню фильтра. Пример: «$ (« form.k-filter-menu »). Mouseenter (function ...)». Но ваше решение лучше. Большое спасибо. – paulalopesfc

+0

добро пожаловать; так как вы новый член: если ответ был helfpul, вы должны рассмотреть возможность его запуска (используя стрелки слева от сообщения), и если ваша проблема решена, вы должны [принять ответ] (http: // meta.stackexchange.com/a/5235) –

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