在ASP.NET 2.0中操作数据之四:使用ObjectDataSource展(3)

  这里会尽可能地移除控件层面的样式设置,取而代之的是使用在一个外部文件里定义的级联样式表。文件Styles.css包含了DataWebControlStyle、HeaderStyle、RowStyle和 AlternatingRowStyle 这几种CSS样式可以用来指示Data Web服务器控件的外观。为了实现这一点,我们可以设置GridView控件的CssClass属性为DataWebControlStyle,HeaderStyle、RowStyle和 AlternatingRowStyle的CssClass属性也类似地设置。

  如果我们设置了这些CssClass属性到Web控件,那么我们不得不记得明确地把每一个属性的值和每一个Data Web服务器控件记录到我们的手册中。一种更为方便管理的方法是使用一个Theme定义CSS样式跟GridView、 DetailsView和FormView控件的属性之间的关联关系。Theme是一个控件层面的属性设置、图片和CSS样式的集合,它可以应用到整个站点的所有页面强制约束外貌和感观。

  我们的Theme将不会包含图片和CSS文件(我们会把stylesheet Styles.css文件照旧留在web应用程序的根目录下),但是它会包含两个外观(Skin)。外观是一个包含Web控件的默认属性设置的文件。特别地,我们将创建一个Skin文件为GridView和 DetailsView定义外观,标示默认的CssClass关联的属性。

  在解决方案资源管理器里选中当前项目,从右键菜单中选择“添加新项”,添加一个外观文件到你的项目并命名为GridView.skin 。

/uploads/allimg/200612/1J9563346_0.png

图9: 添加一个外观文件并命名为GridView.skin

  Skin files need to be placed in a Theme, which are located in the App_Themes folder. Since we don't yet have such a folder, Visual Studio will kindly offer to create one for us when adding our first Skin. Click Yes to create the App_Theme folder and place the new GridView.skin file there.

  外观文件需要被放置到一个主题里,而主题文件则存放在App_Themes文件夹里。因为我们目前还没有这个文件夹,当我们添加第一个外观文件时,Visual Studio会友善地提议为我们创建一个。点击“是”,自动创建App_Theme文件夹并把刚刚添加的GridView.skin文件放置在那里。

图 10: 让Visual Studio自动创建App_Theme文件夹

这将在App_Themes文件夹中自动创建一个主题,主题名称为GridView并包含了外观文件GridView.skin 。

/uploads/allimg/200612/1J95E292_0.png

图 11: 主题GridView已被添加到 App_Theme 文件夹

  把主题GridView重命名为DataWebControls(从GridView文件夹右键菜单中选择重命名)。然后,进入下面所见的GridView.skin文件的标记:

<asp:GridView runat="server" CssClass="DataWebControlStyle"> <AlternatingRowStyle CssClass="AlternatingRowStyle" /> <RowStyle CssClass="RowStyle" /> <HeaderStyle CssClass="HeaderStyle" /> </asp:GridView>   使用了主题DataWebControls后,这将定义任何一个页面中任何一个GridView控件与CssClass相关属性的默认值。让我们添加一个另一个针对DetailsView控件的外观,这个控件我们不久就会用到。在主题DataWebControls添加一个命名为DetailsView.skin的外观,并加入如下的标记: <asp:DetailsView runat="server" CssClass="DataWebControlStyle"> <AlternatingRowStyle CssClass="AlternatingRowStyle" /> <RowStyle CssClass="RowStyle" /> <FieldHeaderStyle CssClass="HeaderStyle" /> </asp:DetailsView>

  关于我们的主题设置,最后一部就是将主题应用到我们的ASP.NET页面。一个主题可以一页一页地应用到页面,也可以应用到一个站点下的所有页面。让我们把主题应用到站点下的所有页面。为了实现这一点,在Web.config的<system.web>片断里加入下面的标记:

<pages styleSheetTheme="DataWebControls" />

  这就顺利完成了!在主题样式表里预设的属性将不会覆盖直接在控件层面设定的属性。如果希望主题里的设置高于控件的设置,则需要在主题样式表里使用主题特征;然而不幸地,主题特征的设置并不出现在Visual Studio 的逻辑视图。查阅 ASP.NET Themes and Skins Overview 和 Server-Side Styles Using Themes 获取更多的关于主题和外观的信息; 查看 How To: Apply ASP.NET Themes 获得更多的关于如何配置页面去使用一个主题的信息。

/uploads/allimg/200612/1J95G5W_0.png

图 12: The GridView显示 Product's Name, Category, Supplier, Price, and Discontinued Information

在 DetailsView控件里每次显示一条数据

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwwdd.html