-1

record.create() を呼び出すと成功する場合もあれば、レコード オブジェクトのプロパティが適切に設定されているにもかかわらず、そのようなメソッドが存在しないというエラーがスローされる場合もあります。

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 に答える