我现在一直在苦苦挣扎,以获得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对象认为没有要保存的更改?
答案 0 :(得分:0)
如何添加 Sys.Observer.makeObservable(客户)