2014-02-18 90 views
1

我有一個方法,我的網頁上KendoUI數據源讀取數據(JSON格式),我的腳本是:如何將新的記錄添加到KendoUI數據源組件

<script id="template" type="text/x-kendo-template"> 
      <tr> 
       <td>#= ID #</td> 
       <td>#= TITLE #</td> 
       <td>#= DESC#</td> 

      </tr> 
     </script> 

      <script> 
       $(document).ready(function() { 
        // create a template using the above definition 
        var template = kendo.template($("#template").html()); 

        var datas = function() { 

         var objects = []; 
         $.ajax({ 
          type: "POST", 
          url: "./WebForm1.aspx/GetNoti", 
          data: {}, 
          async: false, 
          contentType: "application/json; charset=utf-8", 
          dataType: "json", 
          success: 
           function(response) { 

            for (var i = 0; i < response.d.length; i++) { 

             objects.push({ 'ID': response.d[i].ID, 'TITLE': response.d[i].TITLE, 'DESC': response.d[i].DESC }); 

            } 
           }, 

         }); 
         return objects; 
        };      

        var dataSource = new kendo.data.DataSource({ 
         data: datas(), 
         change: function() { // subscribe to the CHANGE event of the data source 
          $("#movies tbody").html(kendo.render(template, this.view())); // populate the table 
         } 
        }); 

        dataSource.read(); 
       }); 
     </script> 

,我想的另一個腳本通過setInterval函數調用一個方法,給我們新的數據添加到我的數據庫中,並顯示在我的KendoUI數據源中。

我嘗試過這樣的:

<script> 
    $(document).ready(function() { 
     $("#go").click(function() { 
      setInterval(function() { 
       var dataSource= new kendo.data.DataSource({ 
        data=function() 
       { 

        $.ajax({ 
         type: "POST", 
         url: "WebForm1.aspx/GetNewNoti", 
         data: '{}', 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function(response) { 

          for (var i = 0; i < response.d.length; i++) { 
           dataSource.add({ 'ID': response.d[i].ID, 'TITLE': response.d[i].TITLE, 'DESC': response.d[i].DESC }); 
          }; 
         }, 
        }); 

        }, 
      }); 

      }, 8000); 
     }); 
    }); 

</script> 

有人能幫助我嗎?

編輯:我編輯seccond這樣的腳本:

$("#go").click(function() { 
        setInterval(function() {test2(); }, 8000); 
        }); 

測試2:

function test2() { 

        var dataSource2 = new kendo.data.DataSource({ 
         data: p(), 
         change: function() { 
         $("#movies tbody").html(kendo.render(template, this.view())); } 

         }); 
        dataSource2.read(); 

        } 

,我們有P()是這樣的:用這種方法

var p = function test() { 
      var objects = []; 
       $.ajax({ 
        type: "POST", 
        url: "./WebForm1.aspx/GetUnCheckNotification", 
        data: {}, 
        async: false, 
        contentType: "application/json; charset=utf-8", 
        dataType: "json" 
        success: function(response) { 
           for (var i = 0; i < response.d.length; i++) { 
             objects.push({ 'ID': response.d[i].ID, 'TITLE':response.d[i].TITLE, 'DESC': response.d[i].DESC }); 

            } 
           }, 
         }); 
         return objects; 

        }; 

,我需要一種將數據源2添加到數據源的方法(在第一個腳本中),有什麼辦法嗎?

+0

你爲什麼不一次又一次地刷新使電網數據庫中存在的任何數據都將顯示在網格中。 – 2014-02-18 14:32:39

+0

想象它就像通知..我想自動做..我嘗試的方式,但我不能這樣做..你有什麼想法? – pejman

+0

在通知的情況下,獲取現有數據源和新數據源的計數,如果後者大於現有數據源,則可以彈出通知。 – 2014-02-18 15:10:30

回答

0

創建一個函數刷新網格像下面和網格創建後調用它:

function RefreshDatasource() { 
     setInterval(function() { 
      //Get the Existing datasource item's count  
      var existingCount=YourDataSource.view().length; 

      // Below code refreshes the grid 
      YourDataSource.read(); 

      //Get the new datasource item's count    
      var newCount=YourDataSource.view().length; 
     if(newCount>existingCount) 
     { 
      //Show your message through the alert box; 
     } 
     }, refreshInterval); 
    } 

這種方式可以acheive所需的功能

+0

感謝您的回答,但它不是網格,它是一個DataSource組件 – pejman

+0

檢查我編輯的答案 – 2014-02-19 10:27:32

相關問題