-1

我发现当我调用 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>

更新:这对我有用。 我没有在“记录”全局对象上使用 create 方法,而是使用了一种简单的方法。每次我想在记录对象上调用 create() 方法时,只需调用自定义方法“resetRecord”。这样我就没有错误,我的逻辑也很完美。

    function resetRecord() {
        record.RecordID = "";
        record.CustomerID = "";
        record.CompanyID = "";      
    }
4

1 回答 1

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);
        }
    }
于 2013-03-17T16:53:42.150 回答