[英]how to manually set column value in kendo grid
我能夠在控制台上設置備注,但我不知道如何在用戶保存更改后將備注值設置到網格中。
無論如何手動將值設置為劍道網格?
示例輸出
|Remark |User Name|Phone Number|Country
[unable]|username length|ad |0123456789 |UK
[enable]| |admin2 |0123456222 |US
[enable]| |admin3 |0123333339 |CN
用戶編輯表格后 - 輸出
|Remark |User Name|Phone Number|Country
[enable]| |admin1 |0123456789 |UK
[enable]| |admin2 |0123456222 |US
[enable]| |admin3 |0123333339 |CN
代碼片段中提供了項目示例。
var defaultData = [{ reason: "", userName: "ad", phoneNumber: "0123456789", country: "UK" }, { reason: "", userName: "admin2", phoneNumber: "0123456222", country: "US" }, { reason: "", userName: "admin3", phoneNumber: "0123333339", country: "CN" }]; var defaultColumns = [{ field: "", width: "40px", template: "<input name='Discontinued' id='remarkCheckBox' class='checkbox' #= (reason.length > 0)? 'disabled=disabled' : ''# type='checkbox' />" }, { field: "reason", title: "Remark", attributes: { style: "color:\\\\#cc0000" } }, { field: "userName", title: "User Name" }, { field: "phoneNumber", title: "Phone Number" }, { field: "country", title: "Country" }]; var viewModel = kendo.observable({ onClick: function() { loadImportGrid(defaultData, defaultColumns); }, }); function loadImportGrid(defaultData, defaultColumns) { var grid = $("#grid").kendoGrid({ columns: defaultColumns, dataSource: { data: defaultData }, dataBound: function() { grid = $("#grid").data("kendoGrid"); grid.saveChanges(); }, saveChanges: function() { getRemark(); }, toolbar: ["save"], selectable: "row", scrollable: true, sortable: true, editable: true }); } function validation(objectList) { if (!objectList.userName || objectList.userName.length < 4) { invalidRecordFormat = "username length"; return invalidRecordFormat; } if (!objectList.country || objectList.country === " ") { invalidRecordFormat = "country invalid"; return invalidRecordFormat; } invalidRecordFormat = ""; return invalidRecordFormat; } function getRemark() { var data = $("#grid").data("kendoGrid").dataSource._data; for (var i = 0; i < data.length; i++) { console.log(validation(data[i])); } } kendo.bind($("#importFile"), viewModel);
html * { font-size: small; font-family: Arial !important; } .uploadLabel { color: white; background-color: #008efe; border-style: solid; border-width: 1px 1px 1px 1px; width: 100px; height: 30px; text-align: center; border-radius: 3px; display: block; line-height: 250%; } #importUserFile { opacity: 0; position: absolute; z-index: -1; }
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.914/styles/kendo.common-bootstrap.min.css" /> <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.914/styles/kendo.bootstrap.min.css" /> <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.914/styles/kendo.bootstrap.mobile.min.css" /> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script src="http://kendo.cdn.telerik.com/2016.3.914/js/kendo.all.min.js"></script> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script src="http://kendo.cdn.telerik.com/2016.2.607/js/kendo.all.min.js"></script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div id="importFile"> <label class="uploadLabel" for="importUserFile">Browse</label> <input name="file" id="importUserFile" data-bind="events:{click:onClick}" /> </div> <div id="grid"></div> </body> </html>
基於驗證是否正確,這就是您可以更新第一列值的方式。
for (var i = 0; i < data.length; i++) {
//access record using for loop - here i is value from loop
var firstItem = $('#grid').data().kendoGrid.dataSource.data()[i];
//set col reason value value
firstItem["reason"]="username length";
//refresh the grid
$('#grid').data('kendoGrid').refresh();
}
另一種方法是使用的DataItem集方法如在本描述的交
dataItem.set() 方法非常慢,因為它每次都會觸發一個事件。 即使是 100 個列表也很慢。
要處理較大的更新,然后使用
dataItem[field] = value
缺點是不會應用臟標記,並且網格不會反映更改。
$('#grid').data('kendoGrid').refresh();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.