Uncaught TypeError: Cannot read property 'tbody' of undefined
Uncaught TypeError: Cannot read property 'tbody' of undefined
我有 Kendo 网格,它从我的对象数组加载数据。在我对其进行一些修改之前,它一直在加载加载,购买时在其中添加一个按钮,目的是单击网格中每一行中的按钮,并且必须打开模型弹出窗口。
我已经按照这个Example修改了。我想要的只是能够单击按钮并打开模型,但现在网格没有显示,因为这个错误是我在控制台上找到的猜测 "Uncaught TypeError: Cannot read property 'tbody' of undefined"。
如何通过单击网格上的按钮打开模型弹出窗口?
Javascript
<script type="text/javascript">
$(document).ready(function () {
$(function () {
//array objects which will add the data to the table
var People = [{ firstName: "E", lastName: "Es" }, { firstName: "Ray", lastName: "Rs" },
{ firstName: "J", lastName: "Js" }, { firstName: "RR", lastName: "ESW" },
{ firstName: "G", lastName: "Gp" }, { firstName: "DS", lastName: "JN" },,
{ firstName: "ZKZG", lastName: "RD" }, { firstName: "JJJ", lastName: "FGJHGH" }];
//Creating my kendo grid
$("#grid").kendoGrid({
//now am specifying the data or binding the data to the datasource
dataSource: {
data: People,
FirstName: { editable: false }
},
pageable: { pageSize: 10, buttonCount: 5 },
height: 400,
resizable: true,
columnMenu: true,
scrollable: true,
pagebale: true,
sortable: { mode: "multiple" },
columns: [
{ template: '<input type="button" class="info k-button k-button-icontext" name="info" value="Info" style="height: 26px; margin: 0px 2px; min-width: 64px;" />' },
{ title: "First Name", field: "firstName" },
{ title: "Last Name", field: "lastName" },
{ title: "Surname", field: "firstName" },
{ title: "Province", field: "firstName" },
{ title: "City", field: "firstName" },
{ title: "Last Name", field: "lastName" }],
rowTemplate: kendo.template($("#rowTemp").html())
})
});
//Kendo model her
$('#grid').data('kendoGrid').tbody.find('.info').click(function () {
$('<div id="info_win">Some content here</div>').appendTo(document.body); // it is showing the error her
$("#info_win").kendoWindow({
title: "Edit roles here",
modal: false,
resizable: true,
visible: false,
width: 300
}).data("kendoWindow").center().open();
});
});
</script>
我想在网格中单击按钮时显示的视图模型
<div class="form-group form-horizontal custom-form">
<label id="txtDate"> Date:</label>
<div id="calendar2" class="input-group">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="date" class="form-control pull-right" id="txtDate">
</div>
</div>
</div>
</div>
网格
<div id="grid"></div>
Kendo 模板
<script type="text/x-kendo-template" id="rowTemp">
<tr>
<td></td>
<td></td>
<td align="center"><input type="button" class="info k-button k-button-icontext" name="info" value="Info" style="height: 26px; margin: 0px 2px; min-width: 64px;" /></td>
</tr>
</script>
第一个问题是你认为你在自执行函数中进行了网格初始化,但它不是......它在 jquery 选择器,这意味着其中的代码永远不会执行,因此当您尝试访问 tbody 时,网格不存在,因为初始化代码从未 运行.
所以,你需要改变
$(function () {
// grid initialization
});
为此:
(function () {
// grid initialization
})();
其次:FirstName: { editable: false } 不是有效的数据源初始化代码...我想你要做的是 datasource.schema.model 配置 (http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.model).
第三:"pagebale"不是一个有效的配置选项(但它不会造成伤害)。
第四:您尝试同时使用列模板显示按钮和行模板显示按钮,但行模板与您的数据不匹配。
这是一个演示,修复了我关于自执行函数与 jquery 选择器的第一点:http://dojo.telerik.com/@Stephen/ULEhA
这允许您在没有 tbody 错误的情况下启动和 运行ning 网格...但是您仍然需要修复其余的配置和 column/row 模板(这是一个整个其他问题)。
我有 Kendo 网格,它从我的对象数组加载数据。在我对其进行一些修改之前,它一直在加载加载,购买时在其中添加一个按钮,目的是单击网格中每一行中的按钮,并且必须打开模型弹出窗口。
我已经按照这个Example修改了。我想要的只是能够单击按钮并打开模型,但现在网格没有显示,因为这个错误是我在控制台上找到的猜测 "Uncaught TypeError: Cannot read property 'tbody' of undefined"。
如何通过单击网格上的按钮打开模型弹出窗口?
Javascript
<script type="text/javascript">
$(document).ready(function () {
$(function () {
//array objects which will add the data to the table
var People = [{ firstName: "E", lastName: "Es" }, { firstName: "Ray", lastName: "Rs" },
{ firstName: "J", lastName: "Js" }, { firstName: "RR", lastName: "ESW" },
{ firstName: "G", lastName: "Gp" }, { firstName: "DS", lastName: "JN" },,
{ firstName: "ZKZG", lastName: "RD" }, { firstName: "JJJ", lastName: "FGJHGH" }];
//Creating my kendo grid
$("#grid").kendoGrid({
//now am specifying the data or binding the data to the datasource
dataSource: {
data: People,
FirstName: { editable: false }
},
pageable: { pageSize: 10, buttonCount: 5 },
height: 400,
resizable: true,
columnMenu: true,
scrollable: true,
pagebale: true,
sortable: { mode: "multiple" },
columns: [
{ template: '<input type="button" class="info k-button k-button-icontext" name="info" value="Info" style="height: 26px; margin: 0px 2px; min-width: 64px;" />' },
{ title: "First Name", field: "firstName" },
{ title: "Last Name", field: "lastName" },
{ title: "Surname", field: "firstName" },
{ title: "Province", field: "firstName" },
{ title: "City", field: "firstName" },
{ title: "Last Name", field: "lastName" }],
rowTemplate: kendo.template($("#rowTemp").html())
})
});
//Kendo model her
$('#grid').data('kendoGrid').tbody.find('.info').click(function () {
$('<div id="info_win">Some content here</div>').appendTo(document.body); // it is showing the error her
$("#info_win").kendoWindow({
title: "Edit roles here",
modal: false,
resizable: true,
visible: false,
width: 300
}).data("kendoWindow").center().open();
});
});
</script>
我想在网格中单击按钮时显示的视图模型
<div class="form-group form-horizontal custom-form">
<label id="txtDate"> Date:</label>
<div id="calendar2" class="input-group">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="date" class="form-control pull-right" id="txtDate">
</div>
</div>
</div>
</div>
网格
<div id="grid"></div>
Kendo 模板
<script type="text/x-kendo-template" id="rowTemp">
<tr>
<td></td>
<td></td>
<td align="center"><input type="button" class="info k-button k-button-icontext" name="info" value="Info" style="height: 26px; margin: 0px 2px; min-width: 64px;" /></td>
</tr>
</script>
第一个问题是你认为你在自执行函数中进行了网格初始化,但它不是......它在 jquery 选择器,这意味着其中的代码永远不会执行,因此当您尝试访问 tbody 时,网格不存在,因为初始化代码从未 运行.
所以,你需要改变
$(function () {
// grid initialization
});
为此:
(function () {
// grid initialization
})();
其次:FirstName: { editable: false } 不是有效的数据源初始化代码...我想你要做的是 datasource.schema.model 配置 (http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.model).
第三:"pagebale"不是一个有效的配置选项(但它不会造成伤害)。
第四:您尝试同时使用列模板显示按钮和行模板显示按钮,但行模板与您的数据不匹配。
这是一个演示,修复了我关于自执行函数与 jquery 选择器的第一点:http://dojo.telerik.com/@Stephen/ULEhA
这允许您在没有 tbody 错误的情况下启动和 运行ning 网格...但是您仍然需要修复其余的配置和 column/row 模板(这是一个整个其他问题)。