我有这个问题,我在开发过程中没有看到,但它发生在我的客户端。我使用jQuery DataTables让用户完成信息。
在大/普通分辨率下,这不会发生,因为DataTables可以显示所有列。但是在较低分辨率下,网格显示绿色加号按钮,并且该组内部的控件未正确初始化。
使用Chrome开发工具控制台:我可以执行此操作:
$(".k_numeric").kendoNumericTextBox({ format: "c", decimals: 2 });
现在控件显示正确。
因此,当DataTables隐藏列以适应显示时,JS似乎没有调用控件。我试着搜索这个,但我甚至不知道如何正确搜索它。
答案 0 :(得分:1)
<强>原因强>
出现此问题是因为响应式扩展在准备行详细信息时会创建新元素。这些新元素需要再次初始化。
<强>解强>
您需要在单独的函数中重新初始化那些成为行详细信息一部分的控件。
解决方案是:
responsive.details.renderer
选项$.fn.DataTable.Responsive.defaults.details.renderer()
调用默认渲染器,返回jQuery集合。示例:
var table = $('#example').DataTable({
responsive: {
details: {
renderer: function (api, rowIdx, columns) {
var $details = $.fn.DataTable.Responsive.defaults.details.renderer(api, rowIdx, columns);
$(".numerictextbox", $details).kendoNumericTextBox({ format: "c", decimals: 2 });
return $details;
}
}
},
createdRow: function( row, data, dataIndex ){
$(".numerictextbox", row).kendoNumericTextBox({ format: "c", decimals: 2 });
}
});
<强>样本强>
请参阅this jsFiddle以获取代码和演示。
<强>链接强>
有关详细信息,请参阅jQuery DataTables – Responsive extension and custom controls文章。