2013-04-12 27 views
5

Tôi đang sử dụng lưới kendo ui. Trong đó tôi đã sử dụng chế độ hàng loạt để lưu các giá trị. Nếu tôi thay đổi bản ghi trong một hàng thì giá trị với hàng tương ứng cũng sẽ được thay đổi và khi chúng ta nhấp vào lưu thì cả hai trường sẽ được lưu vào cơ sở dữ liệu.Cách tự động thay đổi giá trị trong lưới kendo ui

Ví dụ: Tôi có một mạng lưới như:

Integer Value 
    1   First 
    2   Second 
    3   Third 
    4   Fourth 

Nếu tôi thay đổi giá trị từ 1 đến 4 thì giá trị 4 sẽ thay đổi và giá trị cũng thay đổi động. Ý tôi là tôi muốn trao đổi 1 và 4 ở đây. Và tôi cũng có thể thay đổi tất cả các trường còn lại nhưng cuối cùng tất cả các bản ghi phải được lưu vào cơ sở dữ liệu. Tôi đã cố gắng như

Mã này sẽ nằm trong chức năng thay đổi lưới

var grid = $('#grid').data("kendoGrid"); 
var selectedRow = grid.select(); 
var selectedRowIndex = selectedRow.index(); 
console.log(selectedRowIndex); 

var firstItem = dataSource.data()[selectedRowIndex]; 

var datalength = dataSource.data(); 
for (var i = 0; i < datalength.length; i++) 
    { 
    var dataItem = datalength[i].id; 
    if (dataItem == firstItem.get('id')) 
     {         
     var secondItem = dataSource.data()[i];         
     secondItem.set('id', dataItem);        
     } 
    } 

Sau đó, các giá trị đang thay đổi nhưng giá trị không được đi qua bộ điều khiển sau khi nó đã được thay đổi.

Trả lời

7

Nếu bạn muốn chơi trực tiếp với dữ liệu, bạn cần đánh dấu các bản ghi mà bạn thay đổi là dơ bẩn.

dataSource.data()[changedIndex].dirty = true; 
dataSource.sync(); 
+0

Cảm ơn bạn. Và chúng ta có thể biết được thay đổi nào trong sự kiện lưu của lưới kendo ui. – Pa1

+0

Xin lỗi tôi không theo dõi câu hỏi của bạn? – Vojtiik

+0

Cả hai dòng mã này đều cho tôi lỗi –

0

Chỉ cần đặt giá trị dữ liệu từ lưới Kendo.

$ ("# my_grid"). Data ("kendoGrid"). DataSource.data() [rowindex] .columnName = newValue;

Trong dự án của tôi, tôi đã thay đổi giá trị của hàng lưới Kendo của tôi với tên cột = fclty_cd trên một thay đổi thả xuống.

tôi đã viết này:

function onChange(e) { 
    var fromContactNumber = parseFloat($('#fromContactNumber').val()); 
    var toContactNumber = parseFloat($('#toContactNumber').val()); 
    var length = $('#grid table tr[role=row]').length; 
    var faculty = $('#ddl_Faculty').val(); 
    for (var i = 1; i < length; i++) { 
     var num = parseFloat($($('#grid table tr[role=row]')[i]).find("td")[4].innerText); 
     if (num >= fromContactNumber && num <= toContactNumber) { 
      $("#grid").data("kendoGrid").dataSource.data()[i - 1].fclty_cd = faculty; 
      $($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty); 
     } 
    } 
} 

dòng này thay đổi giá trị UI chỉ:. $ ($ ($ ('# bảng lưới tr [role = hàng]') [i]) tìm (" td ") [11]). văn bản (giảng viên);

Dòng này thay đổi giá trị bên trong lưới dữ liệu Kendo: $ ("# my_grid"). Dữ liệu ("kendoGrid"). DataSource.data() [rowindex] .columnName = newValue;

Các vấn đề liên quan