2013-04-30 84 views
0

我有一個包含多個選項卡的應用程序,並且我的KendoUI網格放置在其中代碼位於.js文件中的其中一個選項卡中。 (即視圖具有div標籤,然後將div標籤呈現爲.js文件中的KendoUI網格)。它的數據源從基於MVC的應用程序的模型文件中寫入的類中獲取值。我想讓網格可編輯,並在移動到任何其他選項卡時異步保存更改到數據源。 在這個方向的任何指針將是巨大的......編輯並保存對kendoUI網格的數據源所做的更改

MVC應用程序的視圖文件包含:

<div id="example" class="k-content"> 
      <div id="grid"></div> 

div標籤呈現給KendoUi電網.js文件。代碼如下:

function createGrid() 
{ 
$("#grid").kendoGrid({ 
    dataSource: dataSource, 
    height: 430, 
    columns: [ 
    { field:"ProductName",title:"Product Name" }, 
    { field: "Category", title: "Category"}, 
    { field: "UnitPrice", title:"Unit Price" }, 
    editable: true 
}); 
} 
function createDataSource() 
{ 
    var dataSource = new kendo.data.DataSource({ 
    transport: { 
    read: { 
      url: BaseUrl + "/Products", //this is the action method in Controller which returns a list of Products which is hardcoded in this method itself. 
      dataType: "json" 
    }, 
    autoSync: true, 
    schema: { 
     model: { 
     id: "ProductID", 
     fields: { 
     ProductID: { editable: false, nullable: true }, 
     ProductName: { validation: { required: true } }, 
     Category: { defaultValue: { CategoryID: 1, CategoryName: "Beverages"} }, 
     UnitPrice: { type: "number", validation: { required: true, min: 1} } 
    } 
    } 
    } 
}); 
} 

單擊選項卡/按鈕時調用createDataSource()和createGrid()函數。 我希望在單擊任何其他選項卡時,將此可編輯網格中所做的更改保存到數據源中。

回答

1

數據源的sync方法通過向遠程服務發出請求來保存對其所做的任何更改。您需要在移至其他選項卡時調用它。

+0

我嘗試了使autoSync:true,但值沒有被保存。 – sandy 2013-05-01 07:58:43

+0

除非我看到您的代碼,否則我無法進一步提供幫助。 – 2013-05-01 08:31:01

+0

我已編輯帖子以包含代碼。 – sandy 2013-05-01 18:20:28

1

您應該在傳輸對象上指定update方法,就像這樣;

update: BaseUrl + "/UpdateProducts", 

或者如果您願意;

update: { 
    url: BaseUrl + "/UpdateProducts" 
}, 
相關問題