当前位置:K88软件开发文章中心编程语言.NET.NET02 → 文章内容

细细品味ASP.NET

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2019-1-3 0:48:53

atabase=AdvWorks; UID=sa”)
DataGrid1.DataSource = myCommand.Execute
DataGrid1.DataBind
End Sub
</script>
<body>
<ASP:DataGrid id=“DataGrid1" runat=“server” />
</body>
</html>

所需要做的就是将数据捆绑到数据栅格,然后就生成了一个整洁的HTML表格:

数据捆绑并不局限于来自数据库的数据,你还可以捆绑到hash表格、数组、其它服务器控件、页面的适当层,几乎什么都可以。如果默认的栏目不合适,还可以对其进行定制,让其显示你所感兴趣的部分:

<asp:DataGrid id=“DataGrid1"
AutoGenerateColumns=“false” runat=“server”>
<property name=“Columns”>
<asp:BoundColumn HeaderText=“ Name” DataField=“ProductName”/>
<asp:BoundColumn HeaderText=“Description”
DataField=“ProductDescription”/>
</property>
</asp:DataGrid>

 使用 BoundColumn 控件选择一个简单的栏目,并指定栏的标题和这栏要捆绑到哪里。 AutoGenerate=“false” 属性负责确保栅格不会为你创建所有的栏目。如果想更复杂一些,也可以为这个栏目使用一个模板。

此前提到的Repeater和DataList控件也支持模板,这样就允许对控件的外观进行定制。Repeater实际上并没有外观,你必须要提供 UI,这就意味着必须要使用一个模板。相反,DataList控件是一个捆绑到数据的列表,有一个默认的外观和丰富的行为。为这两个控件添加模板的方法是一样的:

<asp:DataList is=“DataList1" runat=“server”>
<template name=“HeaderTemplate”>
Here”s your list of titles<br>
</template>
<template name=“ItemTemplate”>
<%# DataBinder.Eval(Container.DataItem, “Title”) %> <br>
</template>
</asp:DataList>

有了这个模板template,你就可以指定用哪些 HTML控件来组成数据捆绑控件的每一部分。有5个模板的名字可以与 DataList控件一起使用:HeaderTemplate用于控件的最顶端部分,ItemTemplate 用于各个项目,Alternating-Item-Template用于其它项目,SeparatorTemplate用于各个项目之间的区域,FooterTemplate用于控件的底部。

 这个系统的好处在于:对于如何显示界面,有大量的控件可以使用。进一步使用产品列表,你就能用表7中的代码来生成下图所示的输出:

表 7 DaveSGrid2.aspx
<asp:DataList id=“MyDataList” RepeatColumns=“2" runat=“server”>
<template name=“itemtemplate”>
<table cellpadding=10 style=“font: 10pt verdana”>
<tr>
<td width=1 bgcolor=“BD8672"/>
<td valign=“top”>
<img align=“top”
src=“<%# DataBinder.Eval(Container.DataItem,“ProductImageURL”) %>“ >
</td>
<td valign=“top”>
<b>Name: </b>
<%# DataBinder.Eval(Container.DataItem,”ProductName”) %><br>
<b>Description: </b>
<%# DataBinder.Eval(Container.DataItem,“ProductDescription”) %><br>
<b>Price: </b>
<%# DataBinder.Eval(Container.DataItem,”ProductPrice”, “$ {0}”) %>
</td>
</tr>
</table>
</template>
</asp:DataList>

这个代码相当简单,除了前面显示的 DataList代码外,不再需要更多的东西。代码里有一点值得注意,就是你可以规定出现的栏数,列表会自动处理栏的包装。这样就只需要一点格式化代码,Web页面就得到了极大的改进,而不再使用以前Web 页面上的传统栅格。

开发Web Services(Web服务)

 在Internet上作为服务发布的软件是 Web Services的核心。 ASP.NET提供了一个 Web Services的基础构造环境,从而使开发人员能够为这个服务模型创建服务。

现在我们来跟踪一个简单的例子。比如说你要从一个在线书商那里购买书籍,他们有一个跟踪系统,使你能够看到自己定单的状态。书商用一个陆地运输公司来运输你订的货。这个运输公司也有一个跟踪系统。这样,为了得到你的定单的确切状态,你要查看两个站点。如果书商能够将它自己的定单状态和运输公司的状态信息一同显示出来,就会很方便。

Web Services就允许你在Web上将客户商用函数暴露给公众,例如包裹跟踪细节。编写一个对象,将其方法作为URI暴露出来,URI返回一个XML数据。现在书商可以调用运输公司的跟踪服务,并将跟踪的结果合并到它自己的定单跟踪应用程序中。以下是运输公司如何用 C#创建一个服务的代码:

<%@ WebService language=“c#” %>
using System.Web.Services;
public class Shipping {
[WebMethod]
public String OrderStatus(String OrderNumber) {
// code here to retrieve order details from data store
return Status;
}
}

以上代码保存于 Tracking.asmx文件中,位于运输公司 Web站点的应用程序目录中。这样书商就可以使用多种方法来调用这个 Web Services了。比如使用 HTTP-GET,参数同查询字符串一同被传递:

http://orders.ups.com/orders/Tracking.asmx/OrderStatus?OrderNumber=BRU123

书商还可以使用 HTTP-POST,方法的参数作为表单值在post体内传递。或者还可以使用HTTP-SOAP,方法的参数被包裹在一个工业标准 XML格式中。

现在用户只需要在书商那里查询他们的定单细节,书商的 Web 应用程序就会从运输公司那里收集跟踪信息,然后同书的状态一起返回。书商也可以将它的定单状态细节作为一个Web Services暴露出来,让其它人使用它。

 Web Services的伟大之处在于,它允许你暴露一个服务而不必暴露数据或所有的商业规则。当自动提供商业服务的同时,代码和数据都是安全的。在以后几年里,随着B2B方案的可利用,Web Services的市场会得到快速的增长。

上一页  [1] [2] 

上一页  [1] [2] [3] 


细细品味ASP.NET