我有一个kendogrid,当我添加新记录并重新绑定网格时,新记录不在网格中,但是如果我使用过滤器然后我看到它,但实际上在网格中看到它我必须刷新我的页面。
页面加载时调用此函数
function GetCustomerGridData() {
kendo.ui.progress($("#Customer-Grid"), true);
$.ajax({
type: "GET",
url: URLParam.GetActiveCustomersForTheGrid,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
LoadCustomerGrid(data);
kendo.ui.progress($("#Customer-Grid"), false);
}
});
}
LoadCustomerGrid就是这个
function LoadCustomerGrid(newData) {
CreateCustomerGrid(newData);
}
网格本身就是..
var customerGrid,
CreateCustomerGrid = function (newData) {
customerGrid = $("#Customer-Grid").kendoGrid({
dataSource: {
data: newData
},
schema: {
model: {
CustomerID: { type: "number" }
}
},
filterable: {
mode: "row"
},
columns: [
{
template: "<input type='checkbox' class='checkbox' />",
width: "30px"
}
{
field: "LastName",
title: "Last Name",
filterable: {
cell: {
showOperators: false,
operator: "contains",
inputHeight: "34px"
}
}
},
{
field: "FirstName",
title: "Name",
filterable: {
cell: {
showOperators: false,
operator: "contains"
}
}
},
{
field: "Phone",
title: "Phone",
filterable: {
cell: {
showOperators: false,
operator: "contains"
}
}
},
{
field: "Address",
title: "Address",
filterable: {
cell: {
showOperators: false,
operator: "contains"
}
}
},
{
field: "City",
title: "City",
filterable: {
cell: {
showOperators: false,
operator: "contains"
}
}
},
{
field: "Zip",
title: "Zip",
filterable: {
cell: {
showOperators: false,
operator: "contains"
}
}
}
],
scrollable: true,
sortable: true,
pageable: {
pageSize: 20
},
selectable: "row",
height: $("#Customer-Grid").closest(".col-height-full").height() - 60,
change: function (e) {
// Function call goes here
var detailRow = this.dataItem(this.select());
var optionID = detailRow.get("CustomerID")
}
}).data("kendoGrid");
}
当我去添加记录时,我使用弹出窗口
function CustomerPopupEditor() {
$("#showCustomerEdit").append("<div id='window'></div>");
var myWindow = $("#window").kendoWindow({
position: {
top: 100,
left: "30%"
},
width: "40%",
title: "Add Customer",
content: "/Customer/CustomerEditor",
modal: true,
actions: [
"Close"
],
close: function (e) {
$("#window").data("kendoWindow").destroy();
}
}).data("kendoWindow");
myWindow.open();
GetStates();
HomeStorage.Keys.AddOrEdit = "Add";
}
当添加新记录并单击保存按钮时,此功能称为
function SubmitNewCustomer() {
var customer = NewCustomerToSubmit();
GetAssignmentIDs();
$.ajax({
type: "POST",
url: URLParam.AddNewCustomer + "?assignments=" + HomeStorage.Keys.AssignmentIDString,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(customer),
success: function (data, textStatus, jqXHR) {
HomeStorage.Keys.NewCustomerID = data.id;
},
complete: function (e) {
GetCustomerGridData();
ClearFields();
}
})
}
当我在按钮点击事件上关闭弹出窗口时,这称为
$("#btnCancel").click(function () {
ClearFields();
GetCustomerGridData();
CloseTheWindow();
});
在SubmitNewCustomer函数中,我尝试将GetCustomerGridData()放在其成功函数中,并且它也没有用。
为GetCustomerGridData()返回的数据有超过30K的记录,但我认为这不重要。
知道我缺少什么吗?
答案 0 :(得分:0)
我找到了解决我遇到的问题的解决方案,我也应该销毁网格,所以我添加了这行代码
$('#Customer-Grid').data('kendoGrid').destroy();
我将此添加到我的CloseTheWindow()方法,然后重新绑定网格,并且无需刷新页面即可显示新添加的记录。