我发现当我调用record.create()时,有时它会成功,而有时它会抛出一个错误,说没有这样的方法,即使记录对象的属性设置得恰当。
我是否错误地使用了创建方法? 可能是我遗漏了一些关于JavaScript自定义对象语法的内容。
<script language="javascript" type="text/javascript">
var record = {
RecordID : null,
CustomerID : null,
CompanyID : null,
create : function() {
var obj = new Object();
obj.RecordID = "";
obj.CustomerID = "";
return obj;
}
};
function pageLoad(sender, eventArgs) {
{
//*******SUCCEEDS********
record = record.create()
}
function RadGrid1_RowSelected(sender, args) {
currentRowIndex = args.get_gridDataItem().get_element().rowIndex;
var dataItem = args.get_gridDataItem().get_dataItem();
recordId = dataItem["Record_ID"];
if (tableView.get_selectedItems().length == 1) {
record = record.create();
record.RecordID = dataItem["Record_ID"];
record.CustomerID = dataItem["Customer_ID"];
setValues();
}
else if (tableView.get_selectedItems().length > 1) {
record= record.create();//****FAILS ALWAYS even when record object has non-null properties*******
}
if ($.inArray(recordId, recordIds) == -1) {
recordIds.push(recordId);
}
}
</script>
更新:这对我有用。 我没有在'record'全局对象上使用create方法,而是使用了一种简单的方法。每次我想在记录对象上调用create()方法时,只需调用自定义方法'resetRecord'。这样我没有错误,我的逻辑完美无缺。
function resetRecord() {
record.RecordID = "";
record.CustomerID = "";
record.CompanyID = "";
}
答案 0 :(得分:3)
在第一次调用后它将无效,因为您正在覆盖record
对象。这会破坏任何create()
方法,因为返回的对象没有此方法/属性。
对于您的更新,变量具有功能级别范围。您正在使用record
内的全局RadGrid1_RowSelected
。
我不完全确定你在做什么,但这会让你超越你的第一个问题。
function RadGrid1_RowSelected(sender, args) {
var newRecord;
currentRowIndex = args.get_gridDataItem().get_element().rowIndex;
var dataItem = args.get_gridDataItem().get_dataItem();
recordId = dataItem["Record_ID"];
if (tableView.get_selectedItems().length == 1) {
record = record.create();
record.RecordID = dataItem["Record_ID"];
record.CustomerID = dataItem["Customer_ID"];
setValues();
}
else if (tableView.get_selectedItems().length > 1) {
newRecord= record.create();//****FAILS ALWAYS even when record object has non-null properties*******
}
if ($.inArray(recordId, recordIds) == -1) {
recordIds.push(recordId);
}
}