正 文

ASP.NET 2.0的新增服务、控件与功能


www.7dspace.com 更新日期:2006-5-17 22:30:40 七度空间 免费5位qq号码 免费Q币


  数据源控件

  数据绑定在ASP.NET 1.x中占据着显著位置。几行位置恰当的数据绑定代码可以取代大量查询数据库,并使用对Response.Write方法的重复调用,从而将查询结果转换为HTML内容的ASP代码。

  下面的DataSource1.aspx页使用ASP.NET 2.0数据绑定来显示SQL Server Pubs数据库的一部分:

<html>
<body>
<form runat="server">
<asp:SqlDataSource ID="Titles" RunAt="server"
ConnectionString="server=localhost;database=pubs;Integrated
Security=SSPI"
SelectCommand="select title_id, title, price from titles"
/>
<asp:DataGrid DataSourceID="Titles" RunAt="server" />
</form>
</body>
</html>

  SqlDataSource控件定义了数据源以及对它执行的查询,并且DataGrid的DataSourceID属性指向SqlDataSource。当加载该页时,SqlDataSource控件就会执行查询,并将结果提供给DataGrid。

  当然,实际操作中的数据绑定很少会如此简单。假设您希望缓存查询结果,或者使用在其他控件中选择的项目来参数化数据库查询。图2 中的页使用一个SqlDataSource,用Northwind的Customers表中列出的国家/地区来填充一个下拉列表,并使用另一个 SqlDataSource,用在该下拉列表中选择的国家/地区中的一系列客户来填充一个DataGrid。请注意元素,它指示DataGrid的 SqlDataSource从下拉列表中获取@country的值。还请注意绑定到该下拉列表的SqlDataSource中的 EnableCaching和CacheDuration属性。这些声明将SELECT DISTINCT查询的结果缓存60秒。

  上述示例只是粗浅地探讨了可以通过数据源控件完成的工作。例如,您可以使用存储过程,可以使用从查询字符串、用户输入、会话状态和Cookie中提取的值来参数化查询,并且可以指定控件是否应该使用DataSet或DataReader。因为数据源控件包含数据适配器的功能,所以您甚至可以使用数据源控件来更新数据库。随着ASP.NET 2.0最终发布日期的迫近,读者有望看到大量有关数据源控件的文章。

  尽管我所讨论的是数据绑定主题,但您还应该知道ASP.NET 2.0支持简化的数据绑定语法。ASP.NET开发人员可以找到与下面这个给人深刻印象的表达式类似的表达式:

<%# DataBinder.Eval (Container.DataItem, "title") %>

  在ASP.NET 2.0中,可以按如下形式写一个相同的表达式:

<%# Eval("title") %>

  除了Eval运算符以外,ASP.NET 2.0还支持名为XPath和XPathSelect(它们使用指向XML文档中数据的XPath表达式)的运算符。

  主题与外观(skins)

  如果您不使用属性来丰富控件,那么ASP.NET页面可能会显得非常单调。问题在于:迄今为止,一次只能应用一个属性,并且您无法通过成组地设置控件的可视属性来赋予控件主题。ASP.NET 2.0提供了一项新功能,即输入主题和外观。该功能简化了生成精美页面的任务。

  要查看主题和外观的工作方式,请将以下指令添加到DataSource2.aspx中,如代码2 所示:

<html>
<body>
<form runat="server">
<asp:SqlDataSource ID="Countries" RunAt="server"
ConnectionString="server=localhost;database=northwind;
Integrated Security=SSPI"
SelectCommand="select distinct country from customers order by country"
EnableCaching="true" CacheDuration="60"
/>
<asp:SqlDataSource ID="Customers" RunAt="server"
ConnectionString="server=localhost;database=northwind;
Integrated Security=SSPI"
SelectCommand="select * from customers where country=@country"

<SelectParameters>
<asp:ControlParameter Name="Country"
ControlID="MyDropDownList"
PropertyName="SelectedValue"
/>
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="MyDropDownList" DataSourceID="Countries"
DataTextField="country" AutoPostBack="true" RunAt="server"
/>
<asp:DataGrid DataSourceID="Customers" RunAt="server" />
</form>
</body>
</html>

代码2 DataSource2.aspx

  现在刷新该页面。结果如图1中所示。


图1 主题和外观的工作方式

  接下来,赋予该页面完全不同的外观,方法是:添加一个元素,并且更改@ Page指令以指示要使用的页面主题:

  @ Page指令的新Theme属性以声明方式将主题应用到页面中。还可以使用Page类的Theme属性以编程方式应用主题。主题是外观的集合,而外观是应用于一个控件类型的一组可视属性。BasicBlue和SmokeAndGlass是ASP.NET 2.0附带的几个预定义(或全局)主题中的两个。您可以在Microsoft.NET\Framework\...\ ASP.NETClientFiles\Themes下的子目录中找到它们。

  您可以定义自己的主题和外观,并且自定义地将它们部署到应用程序Themes目录的子目录中。每个子目录构成一个主题,并且主题名称与子目录名称相同。一个主题子目录包含一个或多个.skin文件以及该主题使用的任何其他资源(例如,图像文件和样式表)。实际的外观定义包含在.skin文件中,并且非常类似于用来在ASPX文件中声明控件实例的标记。

  为说明这一点,请在包含DataSource2.aspx的文件夹中创建一个名为Themes的子目录。在该Themes目录中,创建一个名为ShockingPink的子目录。将以下内容复制到ShockingPink目录中的新建的.skin文件中:

<asp:DropDownList runat="server" BackColor="hotpink" ForeColor="white" />
<asp:DataGrid runat="server" BackColor="#CCCCCC" BorderWidth="2pt"
BorderStyle="Solid" BorderColor="#CCCCCC" GridLines="Vertical"
HorizontalAlign="Left"

<HeaderStyle ForeColor="white" BackColor="hotpink" />
<ItemStyle ForeColor="black" BackColor="white" />
<AlternatingItemStyle BackColor="pink" ForeColor="black" />
</asp:DataGrid>

  接下来,将DataSource2.aspx中的@ Page指令更改为:

<%@ Page Theme="ShockingPink" %>

  上述操作的结果无疑是曾经创建过的最为华丽的Web页之一。

  ShockingPink.skin定义了DropDownList和DataGrid控件的默认外观。外观文件不必与它们所属的主题具有相同的名称(尽管它们通常如此)。一个主题可以包含多个.skin文件,而单个.skin文件可以为任意数量的控件类型定义属性。此外,ASP.NET还可以区分默认外观和非默认外观。根据定义,缺少SkinID属性的外观是默认外观。非默认外观包含可以通过控件标记中的SkinID属性引用的SkinID。

7页,页码:[1] [2] [3] [4] [5] [6] [7] 

上一篇:Yahoo!搜索里最热门关键词竟是Google
下一篇:Word入门动画教程105:用题注编制图表目录
ASP.NET 2.0的新增服务、控件与功能 作者: 来源:MSDN
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐