ASP.NET AJAX DataContext对象不跟踪嵌套复杂类型的更改

时间:2010-04-15 13:32:50

标签: javascript ajax asp.net-ajax

我现在一直在苦苦挣扎,以获得ASP.NET AJAX DataContext对象来跟踪我对复杂类型的更改。绑定似乎有效,底层对象也会更新,但DataContext对象不会跟踪更改。

这是我的代码的简化版本(取出了WCF提取和保存调用)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" >  
<head>  
<title></title>  
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/beta/0911/Start.js"></script>  
<script type="text/javascript">
    var customers = null;
    var dataContext = null;

    Sys.require([Sys.components.dataView, Sys.components.dataContext], function() {

        customers =
        [
            { Contact: { Name: 'Fred Johnson' }, Country: { Name: 'USA'} },
            { Contact: { Name: 'Davie Jones' }, Country: { Name: 'England'} }
        ];

        dataContext = Sys.create.dataContext();
        dataContext.trackData(customers);

        Sys.create.dataView('#CustomerView',
        {
            data: customers
        });
    });

    function onSave() {
        if (dataContext.get_hasChanges()) {
            alert("Saved");
        }
        else {
            alert("No changes to save.");
        }
    }

    </script>  
</head>  
<body xmlns:sys="javascript:Sys">  
    <div id="CustomerView" class="sys-template">  
        <ul>  
            <li>
                <label for="country">{{Contact.Name}}</label>
                <input id="country" sys:value="{binding Country.Name}" />
            </li>  
        </ul>  
    </div>  
    <input id="save" type="button" value="Save" onclick="javascript: onSave();" />
</body>  
</html>

为什么当我单击“保存”按钮,更改了国家/地区文本框中的值时,dataContext对象认为没有要保存的更改?

1 个答案:

答案 0 :(得分:0)

如何添加 Sys.Observer.makeObservable(客户)