2013-12-04 4 views
2

Пока я видел различные версии такого рода ошибок раньше, мне еще предстоит увидеть одно с участием Дюрандаля, в котором я думаю, что некоторые из проблем идут из.Обновление сетки KendoUI с использованием OData, всплывающих окон и Durandal.js

У меня есть сетка KendoUI, где я показываю несколько Расходов, и я использую окно сообщения Durandal, чтобы добавить новый расход, и идея заключается в том, что при отправке нового расхода сетка должна обновляться.

Теперь несколько человек уже упоминали следующее «решение»:

var grid = $("#grid").data("kendoGrid"); 
grid.dataSource.read(); 

К сожалению, это не похоже на работу. Хотя я использую всплывающее окно, потому что я использую Durandal, мой код для обновления сетки все еще находится на странице, на которой сетка включена из-за методологии обещаний Дюрандала.

app.showDialog('viewmodels/empresas/egreso/addEgreso').then(function() { 
    //the method called that uses the code above to attempt to refresh the grid 
    refreshGrid(); 
}); 

Каждый раз, когда он достигает метода refreshGrid, возвращается ошибка, говорящая о том, что «сетка» не определена. Как я могу получить свойство сетки, чтобы обновить его после добавления нового элемента в базу данных?

Любая помощь была бы принята с благодарностью.

+0

Опечатка ли ошибка? Вы сказали var grid = $ ("** grid **"). Data ("kendoGrid"); но мне кажется, что это должен быть var grid = $ ("** # grid **"). data ("kendoGrid") ;. – OnaBai

+0

Это на самом деле просто опечатка в вопросе, мой источник имеет $ («# grid»), как и следовало ожидать. Я изменил вопрос, чтобы отразить это. –

+1

Вы подтвердили, что jQuery на самом деле находит элемент #grid? (например, 'console.log ($ (" # grid "). length);'). –

ответ

2

Я рекомендую назначить сетку к наблюдаемому в объекте электросетевого имущества:

вид:

ДИВЫХ данные привязывать = "kendoGrid: myGrid">/дела

ViewModel :

var myGridObservable = ko.observable();

вар myGrid = { штучка: myGridObservable, данные: нуль, DataSource: {...

затем передать myGridObservable на ваш взгляд, и вы можете сделать:

myGrid(). DataSource.read();

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