帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程
「主/明细」资料表
作者:佚名 发布时间:2005-04-02 来源:不详
 


    「主/明细」资料表常用来显示关联数据表间的数据。例如在MyWeb 数据库中有两个有关联的数据表,分别为会员数据表以及订单数据表;会员数据表中记录了基本的会员数据,而订单数据表记录了会员所下的订单。我们可以透过一个DataGrid Web控件将这个会员数据表呈现出来后,点选我们所要检视的会员;此时该会员所下过的订单细目就会列在另一个DataGred Web 控件中,如下图所示:


    要达到这个功能,只要利用DataGrid Web 控件的OnItemCommand 事件就可以办到。我们将主数据表的使用者名称以ButtonColumn 来呈现,这样使用者在这个字段上点选时,就会触发OnItemCommand 事件;我们就可以透过这个事件取得使用者所点选的记录,并设定好条件将子记录从数据源取回后呈现在明细数据表上:

<%@Import Namespace=System.Data.ADO%>
<%@Import Namespace=System.Data%>
<Html>
<Form Runat="Server">
<ASP:DataGrid Id="dgA" AllowPaging="True" PageSize="5"
OnPageIndexChanged="dgA_PageChg"
Runat="Server"
PagerStyle-Mode="NumericPages"
BorderColor="#808080"
HeaderStyle-Font-Names="Courier New"
HeaderStyle-BackColor="#D1DCEB"
HeaderStyle-Font-Bold="True"
HeaderStyle-HorizontalAlign="Center"
AutoGenerateColumns="False"
OnItemCommand="dgA_ICmd">
<Property Name="Columns">
<ASP:ButtonColumn
HeaderText="姓名" DataTextField="UserName"/>
<ASP:BoundColumn
HeaderText="电话" DataField="UserTel"/>
<ASP:BoundColumn
HeaderText="住址" DataField="UserAdd"/>
<ASP:BoundColumn
HeaderText="电邮" DataField="UserEmail"/>
</Property>
</ASP:DataGrid><br>
<ASP:DataGrid Id="dgB" Runat="Server"
PagerStyle-Mode="NumericPages"
BorderColor="#808080"
HeaderStyle-Font-Names="Courier New"
HeaderStyle-BackColor="#D1DCEB"
HeaderStyle-Font-Bold="True"
HeaderStyle-HorizontalAlign="Center"
AutoGenerateColumns="False">
<Property Name="Columns">
<ASP:BoundColumn
HeaderText="日期" DataField="OrderDate"/>
<ASP:BoundColumn
HeaderText="产品名称" DataField="ProductName"/>
<ASP:BoundColumn
HeaderText="单价" DataField="UnitPrice"/>
<ASP:BoundColumn
HeaderText="数量" DataField="Quantity"/>
<ASP:BoundColumn
HeaderText="小计" DataField="Total"/>
</Property>
</ASP:DataGrid>
</Form>
<ASP:Label Id="Label1" Runat="Server"/>
<Script Language="VB" Runat="Server">
Dim dscA As ADODataSetCommand=New ADODataSetCommand("Select * From
Members", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:InetPubwwwrootCRCh08MyWeb.Mdb")
Dim dsDataSet As DataSet=New DataSet
Sub Page_Load(Sender As Object, e As EventArgs)
If Page.IsPostBack=False Then
dscA.SelectCommand.CommandText="Select * From Members"
dscA.FillDataSet(dsDataSet, "Members")
dgA.DataSource=dsDataSet.Tables("Members").DefaultView
dgA.DataBind()
End If
Label1.Text="您目前没有点选任何记录."
End Sub
Sub dgA_PageChg(Sender As Object, e As DataGridPageChangedEventArgs)
dscA.FillDataSet(dsDataSet, "Members")
dgA.DataSource=dsDataSet.Tables("Members").DefaultView
dgA.DataBind()
dgB.Visible=False
End Sub
Sub dgA_ICmd(Sender As Object, e As DataGridCommandEventArgs)
Dim shtR As Short=(dgA.CurrentPageIndex * dgA.PageSize) +
e.Item.ItemIndex
If shtR>=0 Then
dscA.FillDataSet(dsDataSet, "Members")
dscA.SelectCommand.CommandText="Select * From Orders Where
UserId='" & _
dsDataSet.Tables("Members").Rows(shtR)("UserId") & "'"
dscA.FillDataSet(dsDataSet, "Orders")
dgB.DataSource=dsDataSet.Tables("Orders").DefaultView
dgB.DataBind()
dgB.Visible=True
Label1.Text="总共有" & dsDataSet.Tables("Orders").Rows.Count & "
笔记录"
End If
End Sub
</SCRIPT>
</Html>

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统