Javascript 未捕获引用错误:未定义GridCreated
我正在使用telerik RadGrid并从数据库中填充它,这很好。我正在通过分页和排序持久化选择项目,并使用以下JavaScript代码:Javascript 未捕获引用错误:未定义GridCreated,javascript,Javascript,我正在使用telerik RadGrid并从数据库中填充它,这很好。我正在通过分页和排序持久化选择项目,并使用以下JavaScript代码: <script type="text/javascript"> var selected = {}; function RadGrid1_RowSelected(sender, args) { var rfp = args.getDataKeyValue("RFPID");
<script type="text/javascript">
var selected = {};
function RadGrid1_RowSelected(sender, args) {
var rfp = args.getDataKeyValue("RFPID");
if (!selected[rfp]) {
// alert(rfp);
selected[rfp] = true;
}
}
function RadGrid1_RowDeselected(sender, args) {
var rfp = args.getDataKeyValue("RFPID");
if (selected[rfp]) {
selected[rfp] = null;
}
}
function RadGrid1_RowCreated(sender, args) {
var rfp = args.getDataKeyValue("RFPID");
if (selected[rfp]) {
args.get_gridDataItem().set_selected(true);
}
}
function GridCreated(sender, eventArgs) {
var masterTable = sender.get_masterTableView();
var selectColumn = masterTable.getColumnByUniqueName("RFPIDSelect");
var headerCheckBox = $(selectColumn.get_element()).find("[type=checkbox]")[0];
if (headerCheckBox) {
headerCheckBox.checked = masterTable.get_selectedItems().length ==
masterTable.get_dataItems().length;
}
}
</script>
所选变量={};
已选择函数RadGrid1_行(发送方,参数){
var rfp=args.getDataKeyValue(“RFPID”);
如果(!已选择[rfp]){
//警报(rfp);
所选[rfp]=真;
}
}
取消选择函数RadGrid1_行(发送方,参数){
var rfp=args.getDataKeyValue(“RFPID”);
如果(选择[rfp]){
所选[rfp]=null;
}
}
已创建函数RadGrid1_行(发送方,参数){
var rfp=args.getDataKeyValue(“RFPID”);
如果(选择[rfp]){
args.get_gridDataItem().set_selected(true);
}
}
函数GridCreated(发送方、事件参数){
var masterTable=sender.get_masterTableView();
var selectColumn=masterTable.getColumnByUniqueName(“RFPIDSelect”);
var headerCheckBox=$(selectColumn.get_element()).find(“[type=checkbox]”[0];
if(头部检查盒){
headerCheckBox.checked=masterTable.get_selectedItems().length==
masterTable.get_dataItems().length;
}
}
正如您所看到的,GridCreated在这里有明确的定义。这里被称为:
<ClientSettings EnableRowHoverStyle="true">
<Scrolling AllowScroll="True" UseStaticHeaders="True" SaveScrollPosition="True"></Scrolling>
<Selecting AllowRowSelect="true" />
<ClientEvents OnRowCreated="RadGrid1_RowCreated" OnRowSelected="RadGrid1_RowSelected"
OnRowDeselected="RadGrid1_RowDeselected" OnGridCreated="GridCreated" />
</ClientSettings>
那么,为什么在函数定义明确的情况下会出现这种错误呢?我绝不是JavaScript大师,但我已经充分了解了它是一种非常易变的语言。在过去,我经常看到这样的问题,当我看到这个错误的代码上面的其他JavaScript代码中出现错误时。由于JavaScript是按顺序解释的,因此如果此函数上面的任何代码抛出错误或有语法错误,则“编译器”将无法看到该函数,并将其视为不存在 检查以上所有JavaScript代码的语法或其他问题。你甚至可以暂时对其中的一些内容进行评论,以缩小问题的范围。我意识到这可能不是理想的解决方案,但它通常对我有效。:)
此外,它还可以成为调试JavaScript的惊人资源。您是否尝试将断点插入
RadGrid1\u RowSelected()中
使用chrome和firefox调试器。不幸的是,这并不能让我更清楚地了解为什么我在一个函数上得到这个未声明的错误,这个函数显然就在那里。@SumanBogti我在“RadGrid1\u RowSelected”中添加了一个警报,但它从未命中,为什么会发生这种情况?