三、客户端数据访问
Microsoft Ajax Library使我们有能够建立一个完全在Web浏览器端执行的数据库驱动的Web应用程序。有三种重要特征使我们借助于微软的客户端Ajax功能有可能实现客户端数据访问:
? 客户端数据控件
? 客户端模板
? 客户端数据上下文
客户端的DataView控件能够支持您显示任何一条或一组数据库记录。您可以通过创建一个客户端模板来使用DataView控件显示数据库记录。例如,您可以使用类似下面的代码来显示所有的通过一个名为MovieService的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>Movies</title>
<link href="Site.css" rel="stylesheet" type="text/css" />
<script src="Scripts/MicrosoftAjax/start.js" type="text/javascript"></script>
<script type="text/javascript">
Sys.require([Sys.components.dataView, Sys.components.dataContext], function() {
Sys.create.dataView("#moviesView",
{
dataProvider : "Services/MovieService.svc",
fetchOperation: "GetMovies",
autoFetch: true
}
);
});
</script>
</head>
<body>
<h1>Movies</h1>
<ul id="moviesView">
<li>{{Title}} - {{Director}}</li>
</ul>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Movies</title>
<link href="Site.css" rel="stylesheet" type="text/css" />
<script src="Scripts/MicrosoftAjax/start.js" type="text/javascript"></script>
<script type="text/javascript">
Sys.require([Sys.components.dataView, Sys.components.dataContext], function() {
Sys.create.dataView("#moviesView",
{
dataProvider : "Services/MovieService.svc",
fetchOperation: "GetMovies",
autoFetch: true
}
);
});
</script>
</head>
<body>
<h1>Movies</h1>
<ul id="moviesView">
<li>{{Title}} - {{Director}}</li>
</ul>
</body>
</html>
上面示例中的JavaScript代码使用客户端脚本加载器来加载DataView控件和DataView控件所使用的DataContext对象需要的所有脚本,最终实现从一个名为MovieService的WCF服务检索所需要的数据。下一步,创建了一个DataView控件并把它附加到一个HTML元素UL上(其ID 为moviesView)。
客户端模板包含在页面的主体中,像下面这样:
<ul id="moviesView">
<li>{{Title}} - {{Director}}</li>
</ul>
<li>{{Title}} - {{Director}}</li>
</ul>
注意到,DataView控件使用客户模板来格式化从WCF服务检索到的每一个数据库记录。其中,占位符{{Title}}用于显示Movie.Title属性的值,而另一个占位符{{Director}}用于显示Movie.Director属性的值。
当你请求上述文档时,将在Web浏览器中呈现一个如下所示的网页:
您可以使用DataView控件来显示检索自不同数据源的数据。这些数据源包括:
? ASP.NET(.asmx)的Web服务
? WCF Web服务
? ADO.NET数据服务
? 返回JSON格式数据的任何内容。