快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

在前面的文章中,我们已经知道如何将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&q

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号