3

我有一个接收推送通知的移动应用程序,当它收到时,我知道有一行需要更新。我已经尝试了两种方法来检索那个:

var row = data_source.get(<id>);
row.dirty = true;
data_source.sync();

这试图触发一个更新,我可以硬着头皮做我想做的事,但它在概念上是错误的。

我尝试过的另一个选项:

data_source.read( { id : <id> } );

它触发一个 READ 请求,ID 位于options.data. 当我尝试将其连接时,kendo 抱怨没有返回数组,当我将响应放入数组时,它似乎也不起作用。

我该怎么做?在DataSource的上下文之外获取它,并设置相关部分,然后将脏位设置为false?

4

1 回答 1

3

剑道不做开箱即用的单行读取。如果完全 read() 不可行,你必须按照你的建议去做。尝试以下:

1)使您的服务器端读取方法接受带有或不带有id的请求,而不读取所有项目,读取您的一行。

2)使用参数映射和isPushNotificaton标志来控制读取请求参数

parameterMap: function(data, type) {
  if (type == "read") {
    if (isPushNotificaton)
          return { id : yourId };
    else
          return { id : 0}; // get all 
    }
  }

3) 使用requestEnd决定如何处理读取结果

     requestEnd: function(e) {
            var type = e.type;
            if (e.type == 'read') {

               // examine the response(by count/add additional flags into response object)
               var isFullReadResponse = ...;

               if (!isFullReadResponse) {
                  // DIY
                  e.preventDefault();
                  UpdateSingleRow(response, datasource.data());
               } 
            } 
     }

4)按照您的建议实施 UpdateSingleRow 方法 - ..“并设置相关部分,然后将脏位设置为 false”,(刷新单个剑道网格行

于 2013-09-29T21:53:05.570 回答