3个datagridview和3个表 [英] 3 datagridview and 3 tables

查看:58
本文介绍了3个datagridview和3个表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我创建了一个具有3个datagridview的窗口sform,在ms访问中thewr是3个表,彼此之间具有关系,例如< 客户之间存在第一关系->订单和
第二关系在第二个顺序之间存在-> orderdetail

当我在第二个datagridview上单击与第一个datagridview相关的数据时,第一个datagridview充满了客户表记录
我已经完成了这个阶段
但是,当我单击第二个datagrid视图时,第三个datagrid视图中没有显示正确的记录


i have created a window sform having 3 datagridview and thewr is 3 table in ms access having relationship with each other for ex
1st relation exist between customer -> order, and
2nd relation exist betwwen order -> orderdetail

1st datagridview is filled with customer table record when i click on 1 st datagridview related data fill on second datagridview
i have done uptill this stage
but when i click on second datagrid view , proper record are not displayed in third datagrid view

Dim par As DataColumn
      Dim child As DataColumn
      par = ds.Tables("product").Columns("CustomerID")
      child = ds.Tables("order").Columns("CustomerID")

      datarel = New DataRelation("customersorder", par, child)
      ds.Relations.Add(datarel)

      DataGridView2.DataSource = ds.Tables("product")
      DataGridView2.DataMember = "customersorder"







Dim datare2 As DataRelation

       Dim par1 As DataColumn
       Dim child1 As DataColumn
       par1 = ds.Tables("order").Columns("OrderID")
       child1 = ds.Tables("orderdetail").Columns("OrderID")
       datare2 = New DataRelation("detail", par1, child1)
       ds.Relations.Add(datare2)


       DataGridView3.DataSource = ds.Tables("order")

       DataGridView3.DataMember = "detail"

推荐答案

<asp:DataGrid ID="Grd1" DataKeyField="MenuId" OnItemDataBound="Grd1_DataBound" AutoGenerateColumns="false"

           runat="server">
           <Columns>
               <asp:TemplateColumn HeaderText="MenuName">
                   <ItemTemplate>
                       <asp:Label ID="LblSrlNo" Text='<%#Container.DataItem("MenuId") %>' runat="server"></asp:Label>
                       <asp:Label ID="LblSubMenuName" Text='<%#Container.DataItem("MenuName") %>' runat="server"></asp:Label>
                   </ItemTemplate>
               </asp:TemplateColumn>
               <asp:TemplateColumn HeaderText="SubMenuDetails">
                   <ItemTemplate>
                       <asp:DataGrid ID="Grd2" OnItemDataBound="Grd2_DataBound" AutoGenerateColumns="false" runat="server">
                           <Columns>
                               <asp:TemplateColumn HeaderText="SubMenu">
                                   <ItemTemplate>
                                       <asp:Label ID="LblSrlNo2" Text='<%#Container.DataItem("SubMenuId") %>' runat="server"></asp:Label>
                                       <asp:Label ID="LblSubMenuName" Text='<%#Container.DataItem("SubMenuName") %>' runat="server"></asp:Label>
                                   </ItemTemplate>
                               </asp:TemplateColumn>
                               <asp:TemplateColumn HeaderText="SubSubMenu">
                                   <ItemTemplate>
                                       <asp:DataGrid ID="Grd3" ShowHeader="false" AutoGenerateColumns="false" runat="server">
                                           <Columns>
                                               <asp:TemplateColumn HeaderText="Menu Name">
                                                   <ItemTemplate>
                                                       <asp:Label ID="LblSrlNo3" Text='<%#Container.DataItem("SubSubMenuId") %>' runat="server"></asp:Label>
                                                       <asp:Label ID="LblSubSubMenuName" Text='<%#Container.DataItem("SubSubMenuName") %>'

                                                           runat="server"></asp:Label>
                                                   </ItemTemplate>
                                               </asp:TemplateColumn>
                                           </Columns>
                                       </asp:DataGrid>
                                   </ItemTemplate>
                               </asp:TemplateColumn>
                           </Columns>
                       </asp:DataGrid>
                   </ItemTemplate>
               </asp:TemplateColumn>
           </Columns>
       </asp:DataGrid>







Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        BindGrid()
    End Sub
    Protected Sub BindGrid()
        Dim SqlCon1 As New SqlConnection("Data Source=PC-BTTPL-20;Initial Catalog=NTBluePrint;User ID=sa;Password=admin123")
        Dim SqlCom1 As New SqlCommand("SELECT * FROM MenuMaster", SqlCon1)
        If SqlCon1.State <> ConnectionState.Open Then
            SqlCon1.Open()
        End If
        Grd1.DataSource = SqlCom1.ExecuteReader()
        Grd1.DataBind()
        SqlCon1.Close()
    End Sub
    Protected Sub Grd1_DataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Grd1.ItemDataBound
        If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
            Dim SqlCon2 As New SqlConnection("Data Source=PC-BTTPL-20;Initial Catalog=NTBluePrint;User ID=sa;Password=admin123")
            Dim SqlCom2 As SqlCommand
            Dim MenuID As Integer = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "MenuID"))
            Dim dgChildren As DataGrid = DirectCast(e.Item.FindControl("Grd2"), DataGrid)
            SqlCom2 = New SqlCommand("SELECT * FROM SubMenuMaster WHERE MenuId = " & MenuID, SqlCon2)
            If SqlCon2.State <> ConnectionState.Open Then
                SqlCon2.Open()
            End If
            dgChildren.DataSource = SqlCom2.ExecuteReader()
            dgChildren.DataBind()
            SqlCon2.Close()
        End If
    End Sub
    Protected Sub Grd2_DataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
        If e.Item.ItemIndex >= 0 Then
            Dim SqlCon22 As New SqlConnection("Data Source=PC-BTTPL-20;Initial Catalog=NTBluePrint;User ID=sa;Password=admin123")
            Dim SqlCom22 As SqlCommand
            Dim SubMenuId As Integer = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "SubMenuId"))
            Dim dgChildren As DataGrid = DirectCast(e.Item.FindControl("Grd3"), DataGrid)
            SqlCom22 = New SqlCommand("SELECT * FROM SubSubMenuMaster WHERE SubMenuId = " & SubMenuId, SqlCon22)
            If SqlCon22.State <> ConnectionState.Open Then
                SqlCon22.Open()
            End If
            dgChildren.DataSource = SqlCom22.ExecuteReader()
            dgChildren.DataBind()
            SqlCon22.Close()
        End If
    End Sub


这篇关于3个datagridview和3个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆