2014-01-30 2 views
0

Я использую источник данных KendoUI в нескольких местах, некоторые из них связаны с контролем других. Вызов заключается в удаленной веб-службе и может быть довольно дорогостоящим, и я пытаюсь выполнить его сначала.KendoUI Datasource, когда он не привязан к каким-либо элементам управления

Впервые мне нужны данные для ситуации, когда она не привязана к элементу управления.

I call a function similar to this to create the datasouce: 

function BuildDS() { 
    var DS = new kendo.data.DataSource({ 
     transport: { 
      read: { 
       url: "../WS/GetData", 
       dataType: 'json', 
       contentType: "application/json; charset=utf-8", 
       type: "POST" 
      } 
     } 
    }); 

    return DS; 
} 

У меня тогда есть другая функция, которая выполняет итерацию через DS.

function GetName(DSIn, fieldID) { 

    DSIn.read(); 

    var visname = ""; 
    $.each(DSIn.data(), function (idx, vis) { 
     if (vis.FIELD_ID == fieldID) { 
      visname = vis.DISPLAY_LABEL; 
      return false; 
     } 
    }); 
    return visname; 
} 

Я вижу, что удаленная веб-служба вызывается и возвращает данные, как ожидалось. Однако свойство data() DS всегда не возвращает данных.

Когда я привязываю тот же источник данных к элементу управления Kendo, данные записываются в DS.

ответ

1

Получение данных с сервера является асинхронной операцией, поэтому при повторном вызове этот вызов еще не завершен. Вместо этого вы должны использовать fetch:

dataSource.fetch(function(){ 
    var data = this.data(); 
    console.log(data.length); 

    // now you can iterate over data 
}); 
+0

Не бойтесь. Функция fetch не запускается, пока DS не привязан к чему-либо. – keitn

+0

Это странно - какую версию вы используете? проверьте это демо: http://jsbin.com/AnoXini/4/edit (выборка, показывает 77 записей) и сравните с этим http://jsbin.com/AnoXini/3/edit (читайте, показывает 0 записей) –

+0

I используя последнюю версию (2013.3.1316). Единственное отличие от образцов, которые я видел, это то, что я делаю HTTP-сообщение, в то время как примеры обычно являются GET. – keitn

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