Getting Uncaught TypeError: Cannot read property 'uid' of undefined(anonymous function) when trying to bind data to Kendo Grid
Getting Uncaught TypeError: Cannot read property 'uid' of undefined(anonymous function) when trying to bind data to Kendo Grid
我有一个 Kendo 网格,它是在外部 javascript 文件中生成的,并且有数据绑定到它,我得到
Uncaught TypeError: Cannot read property 'uid' of undefined(anonymous function)
我不知道这个 'uid' 是从哪里来的,我一直在单步执行代码,我认为在尝试将返回的数据传递到网格的数据源时出现了错误。
我的网格是这样的(网格确实出现在视图中)
function ShowAdministratorsGrid() {
$("#adminGrid").kendoGrid({
dataSource:[{
data: GetAdministratorsInformation()
}],
columns: [{
field: "AdministratorName",
title: "AdministratorName"
},
{
field: "DateCreated",
title: "DateCreated"
},
{
field: "CreatedBy",
title: "CreatedBy"
}],
Scrollable: true,
Sortable: true,
Pageable: [{
Refresh: true,
PageSizes: true,
ButtonCount: 5
}],
Selectable: true,
Events: function (e) {
e.onRowSelect();
}
})
}
数据源数据是这个
function GetAdministratorsInformation() {
$.ajax({
type: "GET",
url: AddURLParam.AddGetAdminInformationURL,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
GetAdministratorData(data);
}
})
}
GetAdministratorData 函数是这样的..
function GetAdministratorData(admindata) {
administratorName = admindata.administratorName,
dateCreated = admindata.dateCreated,
createdBy = admindata.createdBy
}
我正在获取返回的数据,如您在 ScreenShot1 中所见
如果你看一下 ScreenShot2,我在将返回值添加到 GetAdministratorData 时得到了一个未定义的信息,这是屏幕截图
所以我想这就是为什么我在填充 Kendo 网格时出现错误,有人看到我做错了什么或哪里出了问题吗?
编辑
我缩小了抛出错误的范围..
data
是一个数组。所以您需要通过 admindata[0].administratorName
访问该项目。
或者遍历数组,我真的不知道你想做什么。无论如何,data
是一个数组,(现在)只包含一个对象。
另外,在这一行
dataSource:[{
data: GetAdministratorsInformation()
}],
GetAdministratorsInformation
实际上并没有 return 任何东西,因为它是一个异步操作。如果要设置数据,则需要在 GetAdministratorsInformation
中的成功回调中进行设置
并且在您的 columns
设置中,字段名称是帕斯卡大小写 AdministratorName
而在数据对象中它们是驼峰大小写 administratorName
回顾一下:
function CreateAdministratorsKendoGrid(administratorData) {
$("#adminGrid").kendoGrid({
dataSource:[{
data: administratorData
}],
columns: [{
field: "administratorName",
title: "Administrator name"
},
{
field: "dateCreated",
title: "Date created"
},
{
field: "createdBy",
title: "Created by"
}],
Scrollable: true,
Sortable: true,
Pageable: [{
Refresh: true,
PageSizes: true,
ButtonCount: 5
}],
Selectable: true,
Events: function (e) {
e.onRowSelect();
}
})
}
function InitializeAdministratorsGrid() {
$.ajax({
type: "GET",
url: AddURLParam.AddGetAdminInformationURL,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
CreateAdministratorsKendoGrid(data);
}
})
}
InitializeAdministratorsGrid();
已解决的问题如下:
var objectDDL = e.container.find("select:eq(0)").data("kendoDropDownList");
var rows = jQuery.makeArray(objectDDL.dataSource.data());
$.each(rows, function (index, value) {
objectDDL.dataSource.remove(rows[index]);
});
我有一个 Kendo 网格,它是在外部 javascript 文件中生成的,并且有数据绑定到它,我得到
Uncaught TypeError: Cannot read property 'uid' of undefined(anonymous function)
我不知道这个 'uid' 是从哪里来的,我一直在单步执行代码,我认为在尝试将返回的数据传递到网格的数据源时出现了错误。 我的网格是这样的(网格确实出现在视图中)
function ShowAdministratorsGrid() {
$("#adminGrid").kendoGrid({
dataSource:[{
data: GetAdministratorsInformation()
}],
columns: [{
field: "AdministratorName",
title: "AdministratorName"
},
{
field: "DateCreated",
title: "DateCreated"
},
{
field: "CreatedBy",
title: "CreatedBy"
}],
Scrollable: true,
Sortable: true,
Pageable: [{
Refresh: true,
PageSizes: true,
ButtonCount: 5
}],
Selectable: true,
Events: function (e) {
e.onRowSelect();
}
})
}
数据源数据是这个
function GetAdministratorsInformation() {
$.ajax({
type: "GET",
url: AddURLParam.AddGetAdminInformationURL,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
GetAdministratorData(data);
}
})
}
GetAdministratorData 函数是这样的..
function GetAdministratorData(admindata) {
administratorName = admindata.administratorName,
dateCreated = admindata.dateCreated,
createdBy = admindata.createdBy
}
我正在获取返回的数据,如您在 ScreenShot1 中所见
如果你看一下 ScreenShot2,我在将返回值添加到 GetAdministratorData 时得到了一个未定义的信息,这是屏幕截图
所以我想这就是为什么我在填充 Kendo 网格时出现错误,有人看到我做错了什么或哪里出了问题吗?
编辑
我缩小了抛出错误的范围..
data
是一个数组。所以您需要通过 admindata[0].administratorName
访问该项目。
或者遍历数组,我真的不知道你想做什么。无论如何,data
是一个数组,(现在)只包含一个对象。
另外,在这一行
dataSource:[{
data: GetAdministratorsInformation()
}],
GetAdministratorsInformation
实际上并没有 return 任何东西,因为它是一个异步操作。如果要设置数据,则需要在 GetAdministratorsInformation
并且在您的 columns
设置中,字段名称是帕斯卡大小写 AdministratorName
而在数据对象中它们是驼峰大小写 administratorName
回顾一下:
function CreateAdministratorsKendoGrid(administratorData) {
$("#adminGrid").kendoGrid({
dataSource:[{
data: administratorData
}],
columns: [{
field: "administratorName",
title: "Administrator name"
},
{
field: "dateCreated",
title: "Date created"
},
{
field: "createdBy",
title: "Created by"
}],
Scrollable: true,
Sortable: true,
Pageable: [{
Refresh: true,
PageSizes: true,
ButtonCount: 5
}],
Selectable: true,
Events: function (e) {
e.onRowSelect();
}
})
}
function InitializeAdministratorsGrid() {
$.ajax({
type: "GET",
url: AddURLParam.AddGetAdminInformationURL,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
CreateAdministratorsKendoGrid(data);
}
})
}
InitializeAdministratorsGrid();
已解决的问题如下:
var objectDDL = e.container.find("select:eq(0)").data("kendoDropDownList");
var rows = jQuery.makeArray(objectDDL.dataSource.data());
$.each(rows, function (index, value) {
objectDDL.dataSource.remove(rows[index]);
});