2015-05-24 15 views
6

Tôi muốn một cột auto increment trong Lưới Kendo của tôi. Trường này không phải là tăng tự động phía máy chủ, bởi vì tôi muốn người dùng thấy giá trị và có thể thay đổi nó.Giá trị mặc định động cho Kendo Grid

Giải pháp hiện tại của tôi là thêm thuộc tính click vào nút Create và lặp qua các hàng để tìm giá trị cao nhất và tăng giá trị đó.

Nhưng làm cách nào tôi có thể chèn giá trị này vào hàng mới được tạo? Click sự kiện xảy ra trước khi hàng mới được tạo.

Vì vậy, có hai giải pháp khả thi:

  1. Có một biến như giá trị mặc định và cập nhật nó trong mã JS của tôi.
  2. Truy cập hàng mới tạo bằng cách nào đó và cập nhật giá trị.

Đây là mã JS của tôi:

function createClick(id) { 
    var grid = $("#" + id).data('kendoGrid'); 
    var highestRadif = 0; 
    grid.tbody.find('>tr').each(function() { 
     var dataItem = grid.dataItem(this); 
     var radif = dataItem.SRadifReqR; 
     highestRadif = highestRadif < radif ? radif : highestRadif; 
    }) 
    alert(++highestRadif); 
} 

Trả lời

5

Bạn có thể sử dụng sự kiện edit Lưới để gia tăng giá trị mới generatedId của bạn để mới Lưới của model.

Đây là một số lời giải thích từ documentation của họ:

Sửa

phát sinh khi các chỉnh sửa người dùng hoặc tạo một mục dữ liệu.

  • e.containerjQuery, jQuery đối tượng của các yếu tố chỉnh sửa container, mà kết thúc tốt đẹp giao diện người dùng chỉnh sửa.
  • e.modelkendo.data.Model, Mục dữ liệu sẽ được chỉnh sửa. Sử dụng phương thức isNew để kiểm tra xem mục dữ liệu có mới (được tạo) hay không (đã chỉnh sửa).
  • e.senderkendo.ui.Grid, Ví dụ về tiện ích kích hoạt sự kiện.

Tôi cho rằng nhấp chuột của bạn có một cái gì đó như thế này

//generate id code 
vm.newId = ++highestRadif; // we need to store generated Id 
grid.addRow(); 

sau đó vào chỉnh sửa sự kiện

edit: function(e) { 
    var model = e.model; // access edited/newly added model 
    // model is observable object, use set method to trigger change event 
    model.set("id", vm.newId); 
} 

Note: lĩnh vực mô hình giản đồ của bạn phải thiết lập thuộc tính editable: true, do để cho phép chúng tôi thay đổi giá trị trường mô hình bằng phương pháp set. Ngoài ra nếu lược đồ trường của bạn có yêu cầu xác thực, bạn cần phải loại bỏ nó.

model: { 
    id: "ProductID", 
    fields: { 
     ProductID: { editable: true, nullable: true }, 
    } 
} 

Sample

+0

Bạn có ý gì với 'vm'? Cái gì thế? – Akbari

+1

Nó chỉ là xem biến mô hình. nếu bạn không sử dụng đối tượng mô hình xem, bạn có thể sử dụng biến phạm vi cửa sổ (ví dụ: window.newId') –

+0

Sẽ dễ dàng hơn khi viết toàn bộ phương thức bên trong hàm 'Chỉnh sửa'. Bạn có biết làm thế nào tôi có thể lấy 'Grid' từ' e'? Cảm ơn sự giúp đỡ và sự chú ý của bạn. – Akbari

0

tôi đã có thể đặt một chức năng trong lược đồ nguồn dữ liệu cho việc này.

schema: { 
    model: { 
     id: "id", 
     fields: { 
      currencyType: { defaultValue: getDefaultCurrency }, 
      invoiceDate: { type: "date" } 
     } 
    } 
} 

    function getDefaultCurrency() { 
     return _.find(vm.currencyTypes, { id: vm.currencyId }); 
    }; 
Các vấn đề liên quan