2013-04-17 29 views
7

Bây giờ tôi đang học cách phát triển một ứng dụng web với kendoui, khi tôi cố gắng udpate dữ liệu lưới với cửa sổ popup kendoWindow được thay thế bằng cửa sổ chỉnh sửa tích hợp kendo, tôi không biết làm thế nào để gửi yêu cầu đến từ xa phục vụ, vì vậy tôi cố gắng tìm câu trả lời trong tài liệu api chính thức tại this page, nhưng có một vấn đề mới xảy ra, hiển thị như các mã sau:Tham số 'tùy chọn' trong nguồn dữ liệu kendo

<script> 
    var dataSource = new kendo.data.DataSource({ 
     transport: { 
      read : function (options) { 
       /* implementation omitted for brevity */ 
      }, 
      update: function (options) { 
       // make JSONP request to http://demos.kendoui.com/service/products/update 

       $.ajax({ 
        url  : "http://demos.kendoui.com/service/products/update", 
        dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests 
        // send the updated data items as the "models" service parameter encoded in JSON 
        data : { 
         models: kendo.stringify(options.data.models) 
        }, 
        success : function (result) { 
         // notify the data source that the request succeeded 

         options.success(result); 
        }, 
        error : function (result) { 
         // notify the data source that the request failed 
         options.error(result); 
        } 
       }); 
      } 
     }, 
     batch : true, 
     schema : { 
      model: { id: "ProductID" } 
     } 
    }); 

    dataSource.fetch(function() { 
     var product = dataSource.at(0); 
     product.set("UnitPrice", 20); 
     dataSource.sync(); makes request to http://demos.kendoui.com/service/products/update 
    }); 
</script> 

đó là một ví dụ cho minh họa cách chỉ định cập nhật làm hàm để thực hiện yêu cầu HTTP đến dịch vụ từ xa

vấn đề của tôi là tham số 'tùy chọn' là gì được chuyển đến chức năng đọc và cập nhật. đầu mối duy nhất tôi tìm thấy là các tham số cho hàm transport.parametermap, nhưng tôi không chắc chắn có mối quan hệ nhất định giữa chúng, vì vậy hy vọng ai đó giải thích cho tôi

Trả lời

5

Tham số tùy chọn là những gì bạn đã khám phá. KendoUI cho phép bạn chỉ định một hàm thay vì một số cấu hình cho các phương thức truy cập dữ liệu của lớp nguồn dữ liệu của nó.

Nếu bạn chỉ định một hàm, cách kendoUI có thể biết khi nào bạn đã hoàn tất việc tải dữ liệu? Nó không thể. Vì vậy, có tùy chọn biến này được chuyển đến chức năng của bạn (và thực sự, nó có thể có mọi tên, ví dụ dfhajkfhd) mà bạn có thể gọi để cho kendoUI biết về sự tiến bộ của bạn. Đối với điều này, nó có các phương pháp thành cônglỗi mà bạn có thể gọi.

Nhận xét của bạn, mà bạn đã sao chép từ tài liệu kendo, nói chính xác điều này.

Hoặc bạn có câu hỏi khác biệt?

+0

nhờ Bất động cho câu trả lời. vâng, tôi đã tìm thấy câu trả lời từ các tài liệu tôi liên kết. – Beicai

1

Thật trân trọng những người đã trả lời câu hỏi này và cố gắng

tôi đã tìm thấy câu trả lời từ đáy của kendo-docs mà tôi liên kết trong câu hỏi.

  1. tạo ra một đối tượng 'dataSource' mới và xác định các phương tiện giao thông và cập nhật đọc nó
  2. khi dataSource sẵn sàng, sử dụng 'get' phương pháp dataSource để có được những mục dữ liệu tôi cần phải udpate bởi ID.
  3. dữ liệu udpate sử dụng phương pháp 'đặt' và nộp theo phương pháp 'đồng bộ'

bước cuối cùng được đồng bộ hóa dữ liệu vào cơ sở dữ liệu theo là mã i sử dụng

var updateDataSource = new kendo.data.DataSource({ 
    type: "odata", 
    transport: { 
     read: { 
      url: "/api/odata/PEMEP/TaskInformations/?" 
     }, 
     update: { 
      url: "/api/odata/PEMEP/TaskInformations/?", 
      type: "PUT", 
      dataType: "json", 
     }, 
    }, 
    schema: { 
     model: { 
      id: "_id" 
     } 
    }, 
    sync: function() { // close edit window when update request finished 

     $("#window").data("kendoWindow").close(); 
    }, 
    error: function(e) { 
     console.log(e.status); 
    } 
}); 
updateDataSource.fetch(function() { 

    var task = updateDataSource.get(id); // get dataitem by id 

    task.set("status", status); // set new values 
    task.set("retreatReason", retreatReason); 

    updateDataSource.sync(); //submit the change 
}); 
Các vấn đề liên quan