ASP.NET 2.0高级数据处理之主从数据表

asp.net|高级|数据

  在前面的文章中,我们已经知道如何将ControlParameter(控件参数)与GridView的SelectedValue属性相关联以实现主-从数据表。SelectedValue属性返回DataKeyNames属性所指定的第一个字段的值。你也可以给DataKeyNames属性指定多个用逗号分隔的字段值,例如,你可能需要把多个值传递到从表的数据源。这些额外的键字段值是通过SelectedDataKey属性暴露的,它返回一个DataKey对象,包含键字段的名称/值对(pair)。通过在表达式中设置PropertyName属性(例如SelectedDataKey.Values("title_id")),ControlParameter甚至于可以引用这些键。

<asp:ControlParameter Name="FirstKey" ControlID="MasterGrid" PropertyName="SelectedDataKey.Values[0]"/>
<asp:ControlParameter Name="SecondKey" ControlID="MasterGrid" PropertyName="SelectedDataKey.Values[1]"/>
  下面的例子演示的代码枚举了DataKeys集合,并从GridView的SelectedDataKey中获取键字段的值:

Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Response.Write("<b>SelectedDataKey.Value: </b>" & Server.HtmlEncode(GridView1.SelectedDataKey.Value) & "<br />")
Response.Write("<b>DataKey Field 1: </b>" & Server.HtmlEncode(GridView1.SelectedDataKey.Values("au_id")) & "<br />")
Response.Write("<b>DataKey Field 2: </b>" & Server.HtmlEncode(GridView1.SelectedDataKey.Values("title_id")) & "<br />")
End Sub
Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
Dim key As DataKey
Response.Write("<b>GridView DataKeys: </b><br />")
For Each key In GridView1.DataKeys
Response.Write(Server.HtmlEncode(key.Values(0)) & ", ")
Response.Write(Server.HtmlEncode(key.Values(1)) & "<br/>")
Next
End Sub
  前面的主-从表示例把从表的数据显示在窗体的一个独立的控件中,但是有时候我们希望从表控件是嵌套在主表控件上,作为主表的一部分来显示的。为了实现这种功能,你必须把从表控件和相关的数据源都包含到主表控件的模板中,并带有一个数据源参数,让该参数从主表数据源的字段中获取值。由于使用这种方式的时候,没有可供关联的宣告式参数对象,你必须通过在代码中编程来设置参数值。当主表控件的数据项进行绑定的时候,你可以在主表控件的某个事件处理(例如FormView的DataBound事件)中设置参数值。下面的例子演示了这种技术。

<script runat="server">
Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
OrderDetailsDataSource.SelectParameters("OrderID").DefaultValue = FormView1.DataItem("OrderID")
End Sub
</script>

<asp:FormView DataSourceID="OrdersDataSource"……>
<ItemTemplate>
<b>OrderID:</b>
<asp:Label ID="OrderIDLabel" runat="server" Text='<%# Eval("OrderID") %>'></asp:Label><br />
……
<asp:GridView DataSourceID="OrderDetailsDataSource" ……>
……
</asp:GridView>
</ItemTemplate>
</asp:FormView>

<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Northwind %>" ID="OrdersDataSource" runat="server" SelectCommand="SELECT [OrderID], [OrderDate], [ShipCity], [ShipCountry] FROM [Orders]">
</asp:SqlDataSource>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Northwind %>" ID="OrderDetailsDataSource" runat="server" SelectCommand="SELECT [Order Details].OrderID, Products.ProductName, [Order Details].UnitPrice, [Order Details].Quantity FROM [Order Details] INNER JOIN Products ON [Order Details].ProductID = Products.ProductID WHERE [Order Details].OrderID = @OrderID">
<SelectParameters>
<asp:Parameter Name="OrderID" />
</SelectParameters>
</asp:SqlDataSource>
  下面的例子演示了类似的技术,它使用的是DataList,处理DataList的ItemDataBound事件来设置数据源参数值。

<script runat="server">
Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs)
Dim s As SqlDataSource = e.Item.FindControl("OrderDetailsDataSource")
s.SelectParameters("OrderID").DefaultValue = e.Item.DataItem("OrderID")
End Sub
</script>

时间: 2024-08-03 02:26:43

ASP.NET 2.0高级数据处理之主从数据表的相关文章

ASP.NET 2.0高级数据处理之数据绑定

asp.net|高级|数据 在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相关联.你也可以在代码中使用<%# ... >语法来进行任意值的数据绑定,例如页面和控件属性.集合.表达式,甚至于方法调用的返回结果.为了强制计算数据绑定的值,你必须在包含数据绑定语法的页面或控件上调用DataBind方法.下面的表格显示了ASP.NET中的数据绑定语法的一些例子. 单个属性 Customer:

ASP.NET 2.0高级数据处理之数据绑定语法

asp.net|高级|数据|语法 在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相关联.你也可以在代码中使用<%# ... >语法来进行任意值的数据绑定,例如页面和控件属性.集合.表达式,甚至于方法调用的返回结果.为了强制计算数据绑定的值,你必须在包含数据绑定语法的页面或控件上调用DataBind方法.下面的表格显示了ASP.NET中的数据绑定语法的一些例子. 单个属性 Custome

ASP.NET 2.0高级数据处理之冲突检测

asp.net|高级|数据 前面我们提到,数据绑定控件把传递给数据源的值存放在相互独立的Keys.Values(新值)和 OldValues字典中.在默认情况下,SqlDataSource和ObjectDataSource会忽略OldValues字段,只使用Keys和Values.这种行为是由数据源的ConflictDetection属性检测的,在默认情况下这个属性的值被设置为OverwriteChanges.OverwriteChanges模式意味着"为了更新或删除记录,仅仅匹配主键值&quo

ASP.NET 2.0高级数据处理之处理Null值

asp.net|高级|数据 数据控件支持多种用于处理空值或缺失数据的方法.例如,GridView.FormView和DetailsView都支持EmptyDataText或EmptyDataTemplate属性,当数据源没有返回数据行的时候,你可以使用这些属性来指定控件显示的内容.我们只需要设置EmptyDataText和EmptyDataTemplate其中的一个(如果两个都设置了,EmptyDataTemplate会被重载).你也可以在绑定字段(和衍生的字段类型).模板字段或数据源参数对象上

ASP.NET 2.0高级数据处理之使用参数

你可以处理Select.Update.Insert.Delete和Filter的事件,以验证并处 理传递给这些操作的参数值.为了达到这个目标,数据绑定的控件和数据源控件 都暴露了适当的事件.例如,在GridView的Updating事件中,你就可以看到Keys .NewValues和OldValues字典中的参数名称和值,而它们将会被传递到数据源. 在数据源一端,你可以处理SqlDataSource的Updating事件,看到这些应用到下 层命令对象的参数,而这些命令将会执行以完成相关操作.类似

ASP.NET 2.0高级数据处理之处理控件事件

在前面的部分中,你已经看到了几个数据控件事件的例子.数据控件的事件 都是在页面执行生命周期的适当时候提供给你,供你插入自定义代码的.一般情 况下,在某种特定的操作发生之前和之后,数据控件都会暴露事件.在某种操作 之前调用的事件的名称一般带有-ing后缀,而在某种操作之后调用的事件的名称 一般带有-ed后缀.例如,GridView所支持的事件包括: · PageIndexChanging和PageIndexChanged - 在分页操作之前和之后引发 · SelectedIndexChanging

ASP.NET2.0高级数据处理之数据绑定

本文详细介绍了ASP.NET 2.0高级数据处理中的数据绑定,包括有绑定语法,指定运行时所期望的数据类型:如何绑定到公共变量和页面的简单属性:如何绑定到另一个控件的属性:如何绑定到通用语言运行时集合类型:如何绑定到ArrayList:如何绑定到DataView等. 在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相关联.你也可以在代码中使用<%# ... >语法来进行任意值的数据绑定,例

asp.net2.0实现主从数据表的简单方法

asp.net|数据 实现效果:在主表里选中某行,从表里得出该行的详情. 方法1:代码实现.在页面上放一个GridView,一个DetailView.数据绑定GridView并且要设置主键,然后在SelectedIndexChanged事件写代码:选择发生变化时,DetailView也改变为相应的Detail.具体代码:using System;using System.Data;using System.Configuration;using System.Collections;using

ASP.NET 2.0服务器控件之处理回传数据

asp.net|服务器|控件|数据 为自定义服务器控件实现事件,是一个比较复杂的过程.开发人员不仅需要根据上一篇文章中介绍的方法,实现捕获回传事件,而且有时候还需要参与回传数据处理过程.本文将通过典型应用介绍处理回传数据的方法. 1. 实现处理回传数据 在上一篇文章介绍的捕获回传事件过程中,往往都不涉及回传到服务器的控件数据.开发人员主要实现IPostBackEventHandler接口就能够成功捕获事件,并为之定义事件处理程序.然而,有些服务器控件在应用过程中,涉及回传数据的变化等情况.例如,