WebForm网页的数据架构及其连接技术.pptx
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DataBinder 类别最主要的优点,就是 能自动进行类型转换。
在 DataList、DataGrid 或 Repeater 等能够显示多列数据的服务器控制项的 模板(Template)中,数据项目的命 名容器永远是 Container.DataItem。
Page 是另一个可以用于 DataBinder.Eval 的命名容器。
连接多列数据项的 Web 服务器控制项
步骤:
6. 在 Web Form 网页中编写程序代码来调用网页或服务器控制项的的 DataBind 方法。
请注意,为避免耗用资源造成效率低,我们通常不希望在每次往返时都 调用 DataBind 方法,因为它会替换服务器控制项中的数据值。您可以 在检查网页的 IsPostBack 属性来确保只有在网页第一次开启是进行数 据连接操作。例如:
Web Form 网页的数据来源
数据库存取
受管理的数据提供者(Connection 与 Command 组
件) 数据集(Dataset) 直接执行 SQL表达式或存取过程
XML 数据
将 XML数据转换成数据集,并使用 数据访 问方式读取与更新数据。
使用 System.Xml 命名空间的 XML 分析与方法来处 理数据。
演示如何将控制项的属性连接到其他控制项的 属性。
C3.aspx
演示如何将控制项的属性连接到其他的控制项 的属性。
C4.aspx
演示如何将 DropDownList 服务器控制项连 接到ArrayList 组件,以便使 ArrayList 组件 的元素成为下拉式清单的选项。
使用 DataBinder 类别进行连接
一次显示多个数据项或多列数据的 Web服务 器控制项与 HTML 服务器控制项。
连接多列数据项的 Web 服务器控制项
您可以将 DropDownList、ListBox、 CheckBoxList、RadioButtonList、DataGrid、 DataList、Repeater… 等多笔数据列的服务器 控制项连接到内含多信息项目的数据来源。
将 CheckBox 服务器控制项连接至布尔值,以便直接 设定控制项的选取状态。
将 Image 服务器控制项的 ImageUrl 属性连接至內含 图形的 URL 或名称的数据库属性,以便设定要于该 控制项所显示的图形。
设定控制项的色彩、字型或大小。如果您喜欢将使用 者的偏好设定存储在数据库或其他数据来源中,这将 是一种非常好用的方法。
5. 将 DataValueField 属性设定为某一个字段的名称,以便使该字 段的内容将成为服务器控制项中内容项目的关联值(亦即 Value 属性)。这是可选项。例如: MyDropDownList.DataTextField = “姓名” MyDropDownList.DataValueField = “目前工资"
Web Form 网页的数据架构和 数据连接技术
Web Form 网页数据存取的基 本概念
Web Form 网页的数据存取和 Windows Form 表单的数据存取在许多方面不不尽相同
状态管理 服务器和客户端的分离 延展性
Web Form 网页数据存取的概念基础:
采用中断连接模型 假设数据读取的频率远高于数据更新的频率 期望使用最少的服务器资源 使用远端处理流程存取数据,也就是分散式数据存取
使用运算式进行数据连接的好处是拥有下列灵活性:
您可以使用任何运算式,只要该运算式可以解析成单一数据值或 控制项可以使用的数据值即可。
您可以将运算式指派給任何属性,也就是说,您可以将任何属性 连接到数据。
Web Form 网页范例
C1.aspx
演示如何连接到网页上的简单属性。
C2.aspx
<asp:TextBox id="TextBox1" runat="server" Text='<%# DataView1(0)("au_lname") %>'>
</asp:TextBox>
<asp:Image id=Image1 runat="server" ImageUrl = '<%# DataView(0)(" PhotoURL") %>'>
步骤:
1.
将服务器控制项的 DataSource 属性设定成您所要连 接的数据来源,包括:
ArrayList 组件
集合
数据读取器
DataView 组件
DataRow 组件
数据集当中的 DataTable 组件
2. 指定要连接哪一个数据成员(DataMember 属性) 。
连接多列数据项的 Web 服务器控制项
使用 DataBinder 类别进行连接
使用数据连接运算式将 TextBox 服务器控 制项的 Text 属性连接到内含单列数据的数 据视图 :
不使用 DataBinder 类别
<asp:TextBox id="TextBox1" runat="server“ Text='<%# DataView1(0)("au_lname") %>'>
数据的读取与更新频率
大多数的数据存取操作都是采用只读模式。 Web Form 网页的数据连接架构是单向的。 拥有更高的效率。 Web Form 网页预设并没有内含将控制项
数据写回数据来源的方法,您必须自己编 写程序代码來完成。
降低服务器的負荷
网页中的任何数据存取都会增加服务器的 处理时间并占用内存。
步骤:
3. 如果使用的是 DataGrid 或 DataList 服务器控制项,请将 DataKeyField 属性设定成您可以在执行阶段用来独立识别的数 据列名称,一般情况,就是数据来源的主索引关键字段。
4. 如果您使用的是 ListBox、DropDownList、CheckBoxList、 RadioButtonList 或 HtmlSelect 控制项,请将 DataTextField 属性设定为其数据内容要显示于字段名称。例如: MyDropDownList.DataTextField = "姓名"
</asp:TextBox>
使用 DataBinder 类别
<asp:TextBox id="TextBox1" runat="server“ Text='<%# DataBinder.Eval(DataView1, "[0].au_lname") %>'>
</asp:TextBox>
使用 DataBinder 类别进行连接
其他数据来源
Web Form 网页的数据连接架构允许您将控制项连接 至任何结构。
您可以连接至网页中任何可使用的数组或集合,以及 网页或其他控制项的属性。
数据集、数据适配器、与数据 读取器
数据集(DataSet)
应用程序所实际使用的数据在内存中的复本, 是真正的数据快取。
数据集与其他数据来源是中断连接的,亦即采 用一种离线的模式。
存取数据集或每次重新建立
每当网页被处理时,就建立数据集并填满它。 当网页处理完并将网页传回浏览器时,数据集 将被移除。
建立并填满数据集一次。通常是在网页第一次 执行时建立并填满数据集一次,然后再在每次 次往返时可取会存储的数据集。
服务器或客户端快取
在服务器中以工作阶段状态、应用程序状态、 或使用快取來存储数据集。
在客户端中(亦即在网页中)使用检查状态存 储的数据集。
连接属性
Web Form 网页中的数据连接是非常灵活的,基 本上它允許您将控制项的任何属性连接到数据来 源。
设定要在 TextBox、Label、Button、LinkButton 或其他控制项中显示的文字。
设定超连接控制项的 Href 属性来决定其目标网页。
数据连接运算式
将所要连接的数据的相关信息建立在运算 式中,然后再将运算式的结果指派给控制 项属性。
可连接到数据来源、公用变量、简单属性、 集合、运算式、方法调用传回的结果、 Page 的属性以及其他控制项的属性。
数连接运算式的语法:
<tagprefix:tagname property = ‘<%# databinding
expression %>’ runat=“server” /> -或-
常量字串 <%# data-binding expression %>
数据连接运算式范例
连接到简单属性 连接到集合
连接到运算式 连接到方法所传回的结果 连接到资料的来源
连接到资料来源2
产品编号: <%# ProductId %>
DataBinder.Eval 方法的三个参数:
运算式所据评估的数据容器的组件参考。此参 数在网页的指定语言中必须是有效的组件识别 码。此数据容器可能是数据集、数据表、数据 视图、或父控制项。
浏览路径,也就是所要连接的数据成员。它必 須是以英文句点分隔的字串类型的属性或字段 名称。
.NET Framework 格式字串,类似 String.Format 所使用的,会将 Object(数 据连接运算式的评量结果)转换成一个能够被 提出请求的浏览器所显示的 String。此参数是 可选项。
数据读取器能够自 SQL 数据库中提取只读\向前的 读取模式。
通过调用 OleDbCommand 或 SqlCommand 的 ExecuteReader 方法可传回数据读取器,然后便可将 其连接至 服务器控制项。
自行开启和关闭连接。
ExecuteNonQuery 方法。
数据存取策略
中断连接模型( Disconnected Model)
Web Form 网页是中断连接的,其数据存 取亦是采用此模式。
中断连接模型決定您在 Web Form 网页中 的数据存取方式:
您所使用的数据于每一次往返中並不是自动可 使用的。
请不要让连接到数据来源的连接持续保持开启 状态。
每一次往返于服务器时,只会执行单项的数据 存取操作。
Web应用程序在数据存取操作方面的设计 准则:
只从数据来源提取出网页所需的数据。 尽可能使用客户端的状态管理来存取数据。
远端处理流的数据存取
建议您将数据存取逻辑从使用者界面分离 出来,而将它放在能够与数据来源互动的 元件中。
Web Form 网页实际上是通过一个 XML 数据流与其他的处理流交换数据。
仍然可以更新数据来源。 客户端的虚拟数据库。
数据适配器(DataAdapter)
数据集与数据来源之间的桥梁。 Fill 方法。 Update 方法。
数据集、数据适配器、与数据 读取器
数据读取器(DataReader)
对 Web 应用程序而言,我们常常只是执行简短的操 作,显然这并不需要在数个一系列的请求间保留 DataSet 组件,此时数据读取器反而是较好的选择。
Web Form 网页范例
C5.aspx
本网页范例用DataBinder.Eval 的写法,显得 更加简洁。
数据连接的时机和时机的类型
数据连接的时机
设计阶段 执行阶段 DataBinding 事件
数据连接的类型
一次只显示单一数据值的 Web 服务器控制项 与 HTML 服务器控制项。
</asp:Image>
DataBind 方法
ASP 的 Response.Write 语法(<%= %>)会在网页被 处理时加以评量,然而 的数据连接运算式却只 有当 DataBind 方法被调用时才会进行评量。
Page 与所有服务器控制项都拥有 DataBind 方法。
当您调用某一个服务器控制项的 DataBind 方法时,会将 数据来源连接到该服务器控制项以及它所有的子控制项 (包括服务器控制项属性),亦即只需调用父控制项的 DataBind 方法即可。
员工姓名: <asp:DropDownList id="Drop1" datasource = '<%# MyArray %>'
runat="server">
邮编地址: <%# (customer.Zip + " " + customer.Address ) %>
应缴税费: <%# GetTax(Salary) %>
数据集 vs 数据读取器 数据集与数据命令
存留周期(Web Form网页会先被初始化、接 着被处理进行、然后于每次往返时被舍弃)。
在许多情况下,使用数据读取器提取数据然后 于执行阶段连接控制项将会更有效率。
例外状况:
使用关联数据表 与其他处理流交换数据 使用静态的数据项集合
数据存取策略
在 DataList、DataGrid 或 Repeater 等能够显示多列数据的服务器控制项的 模板(Template)中,数据项目的命 名容器永远是 Container.DataItem。
Page 是另一个可以用于 DataBinder.Eval 的命名容器。
连接多列数据项的 Web 服务器控制项
步骤:
6. 在 Web Form 网页中编写程序代码来调用网页或服务器控制项的的 DataBind 方法。
请注意,为避免耗用资源造成效率低,我们通常不希望在每次往返时都 调用 DataBind 方法,因为它会替换服务器控制项中的数据值。您可以 在检查网页的 IsPostBack 属性来确保只有在网页第一次开启是进行数 据连接操作。例如:
Web Form 网页的数据来源
数据库存取
受管理的数据提供者(Connection 与 Command 组
件) 数据集(Dataset) 直接执行 SQL表达式或存取过程
XML 数据
将 XML数据转换成数据集,并使用 数据访 问方式读取与更新数据。
使用 System.Xml 命名空间的 XML 分析与方法来处 理数据。
演示如何将控制项的属性连接到其他控制项的 属性。
C3.aspx
演示如何将控制项的属性连接到其他的控制项 的属性。
C4.aspx
演示如何将 DropDownList 服务器控制项连 接到ArrayList 组件,以便使 ArrayList 组件 的元素成为下拉式清单的选项。
使用 DataBinder 类别进行连接
一次显示多个数据项或多列数据的 Web服务 器控制项与 HTML 服务器控制项。
连接多列数据项的 Web 服务器控制项
您可以将 DropDownList、ListBox、 CheckBoxList、RadioButtonList、DataGrid、 DataList、Repeater… 等多笔数据列的服务器 控制项连接到内含多信息项目的数据来源。
将 CheckBox 服务器控制项连接至布尔值,以便直接 设定控制项的选取状态。
将 Image 服务器控制项的 ImageUrl 属性连接至內含 图形的 URL 或名称的数据库属性,以便设定要于该 控制项所显示的图形。
设定控制项的色彩、字型或大小。如果您喜欢将使用 者的偏好设定存储在数据库或其他数据来源中,这将 是一种非常好用的方法。
5. 将 DataValueField 属性设定为某一个字段的名称,以便使该字 段的内容将成为服务器控制项中内容项目的关联值(亦即 Value 属性)。这是可选项。例如: MyDropDownList.DataTextField = “姓名” MyDropDownList.DataValueField = “目前工资"
Web Form 网页的数据架构和 数据连接技术
Web Form 网页数据存取的基 本概念
Web Form 网页的数据存取和 Windows Form 表单的数据存取在许多方面不不尽相同
状态管理 服务器和客户端的分离 延展性
Web Form 网页数据存取的概念基础:
采用中断连接模型 假设数据读取的频率远高于数据更新的频率 期望使用最少的服务器资源 使用远端处理流程存取数据,也就是分散式数据存取
使用运算式进行数据连接的好处是拥有下列灵活性:
您可以使用任何运算式,只要该运算式可以解析成单一数据值或 控制项可以使用的数据值即可。
您可以将运算式指派給任何属性,也就是说,您可以将任何属性 连接到数据。
Web Form 网页范例
C1.aspx
演示如何连接到网页上的简单属性。
C2.aspx
<asp:TextBox id="TextBox1" runat="server" Text='<%# DataView1(0)("au_lname") %>'>
</asp:TextBox>
<asp:Image id=Image1 runat="server" ImageUrl = '<%# DataView(0)(" PhotoURL") %>'>
步骤:
1.
将服务器控制项的 DataSource 属性设定成您所要连 接的数据来源,包括:
ArrayList 组件
集合
数据读取器
DataView 组件
DataRow 组件
数据集当中的 DataTable 组件
2. 指定要连接哪一个数据成员(DataMember 属性) 。
连接多列数据项的 Web 服务器控制项
使用 DataBinder 类别进行连接
使用数据连接运算式将 TextBox 服务器控 制项的 Text 属性连接到内含单列数据的数 据视图 :
不使用 DataBinder 类别
<asp:TextBox id="TextBox1" runat="server“ Text='<%# DataView1(0)("au_lname") %>'>
数据的读取与更新频率
大多数的数据存取操作都是采用只读模式。 Web Form 网页的数据连接架构是单向的。 拥有更高的效率。 Web Form 网页预设并没有内含将控制项
数据写回数据来源的方法,您必须自己编 写程序代码來完成。
降低服务器的負荷
网页中的任何数据存取都会增加服务器的 处理时间并占用内存。
步骤:
3. 如果使用的是 DataGrid 或 DataList 服务器控制项,请将 DataKeyField 属性设定成您可以在执行阶段用来独立识别的数 据列名称,一般情况,就是数据来源的主索引关键字段。
4. 如果您使用的是 ListBox、DropDownList、CheckBoxList、 RadioButtonList 或 HtmlSelect 控制项,请将 DataTextField 属性设定为其数据内容要显示于字段名称。例如: MyDropDownList.DataTextField = "姓名"
</asp:TextBox>
使用 DataBinder 类别
<asp:TextBox id="TextBox1" runat="server“ Text='<%# DataBinder.Eval(DataView1, "[0].au_lname") %>'>
</asp:TextBox>
使用 DataBinder 类别进行连接
其他数据来源
Web Form 网页的数据连接架构允许您将控制项连接 至任何结构。
您可以连接至网页中任何可使用的数组或集合,以及 网页或其他控制项的属性。
数据集、数据适配器、与数据 读取器
数据集(DataSet)
应用程序所实际使用的数据在内存中的复本, 是真正的数据快取。
数据集与其他数据来源是中断连接的,亦即采 用一种离线的模式。
存取数据集或每次重新建立
每当网页被处理时,就建立数据集并填满它。 当网页处理完并将网页传回浏览器时,数据集 将被移除。
建立并填满数据集一次。通常是在网页第一次 执行时建立并填满数据集一次,然后再在每次 次往返时可取会存储的数据集。
服务器或客户端快取
在服务器中以工作阶段状态、应用程序状态、 或使用快取來存储数据集。
在客户端中(亦即在网页中)使用检查状态存 储的数据集。
连接属性
Web Form 网页中的数据连接是非常灵活的,基 本上它允許您将控制项的任何属性连接到数据来 源。
设定要在 TextBox、Label、Button、LinkButton 或其他控制项中显示的文字。
设定超连接控制项的 Href 属性来决定其目标网页。
数据连接运算式
将所要连接的数据的相关信息建立在运算 式中,然后再将运算式的结果指派给控制 项属性。
可连接到数据来源、公用变量、简单属性、 集合、运算式、方法调用传回的结果、 Page 的属性以及其他控制项的属性。
数连接运算式的语法:
<tagprefix:tagname property = ‘<%# databinding
expression %>’ runat=“server” /> -或-
常量字串 <%# data-binding expression %>
数据连接运算式范例
连接到简单属性 连接到集合
连接到运算式 连接到方法所传回的结果 连接到资料的来源
连接到资料来源2
产品编号: <%# ProductId %>
DataBinder.Eval 方法的三个参数:
运算式所据评估的数据容器的组件参考。此参 数在网页的指定语言中必须是有效的组件识别 码。此数据容器可能是数据集、数据表、数据 视图、或父控制项。
浏览路径,也就是所要连接的数据成员。它必 須是以英文句点分隔的字串类型的属性或字段 名称。
.NET Framework 格式字串,类似 String.Format 所使用的,会将 Object(数 据连接运算式的评量结果)转换成一个能够被 提出请求的浏览器所显示的 String。此参数是 可选项。
数据读取器能够自 SQL 数据库中提取只读\向前的 读取模式。
通过调用 OleDbCommand 或 SqlCommand 的 ExecuteReader 方法可传回数据读取器,然后便可将 其连接至 服务器控制项。
自行开启和关闭连接。
ExecuteNonQuery 方法。
数据存取策略
中断连接模型( Disconnected Model)
Web Form 网页是中断连接的,其数据存 取亦是采用此模式。
中断连接模型決定您在 Web Form 网页中 的数据存取方式:
您所使用的数据于每一次往返中並不是自动可 使用的。
请不要让连接到数据来源的连接持续保持开启 状态。
每一次往返于服务器时,只会执行单项的数据 存取操作。
Web应用程序在数据存取操作方面的设计 准则:
只从数据来源提取出网页所需的数据。 尽可能使用客户端的状态管理来存取数据。
远端处理流的数据存取
建议您将数据存取逻辑从使用者界面分离 出来,而将它放在能够与数据来源互动的 元件中。
Web Form 网页实际上是通过一个 XML 数据流与其他的处理流交换数据。
仍然可以更新数据来源。 客户端的虚拟数据库。
数据适配器(DataAdapter)
数据集与数据来源之间的桥梁。 Fill 方法。 Update 方法。
数据集、数据适配器、与数据 读取器
数据读取器(DataReader)
对 Web 应用程序而言,我们常常只是执行简短的操 作,显然这并不需要在数个一系列的请求间保留 DataSet 组件,此时数据读取器反而是较好的选择。
Web Form 网页范例
C5.aspx
本网页范例用DataBinder.Eval 的写法,显得 更加简洁。
数据连接的时机和时机的类型
数据连接的时机
设计阶段 执行阶段 DataBinding 事件
数据连接的类型
一次只显示单一数据值的 Web 服务器控制项 与 HTML 服务器控制项。
</asp:Image>
DataBind 方法
ASP 的 Response.Write 语法(<%= %>)会在网页被 处理时加以评量,然而 的数据连接运算式却只 有当 DataBind 方法被调用时才会进行评量。
Page 与所有服务器控制项都拥有 DataBind 方法。
当您调用某一个服务器控制项的 DataBind 方法时,会将 数据来源连接到该服务器控制项以及它所有的子控制项 (包括服务器控制项属性),亦即只需调用父控制项的 DataBind 方法即可。
员工姓名: <asp:DropDownList id="Drop1" datasource = '<%# MyArray %>'
runat="server">
邮编地址: <%# (customer.Zip + " " + customer.Address ) %>
应缴税费: <%# GetTax(Salary) %>
数据集 vs 数据读取器 数据集与数据命令
存留周期(Web Form网页会先被初始化、接 着被处理进行、然后于每次往返时被舍弃)。
在许多情况下,使用数据读取器提取数据然后 于执行阶段连接控制项将会更有效率。
例外状况:
使用关联数据表 与其他处理流交换数据 使用静态的数据项集合
数据存取策略