Click here to Skip to main content
15,896,201 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi,
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

VB
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"



VB
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"
Posted
Comments
Simon_Whale 21-Mar-11 8:37am    
define proper records not displayed in the 3rd grid, is there also any error messages?
Sandeep Mewara 21-Mar-11 9:40am    
You have to elaborate on the issue.

1 solution

XML
<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>



VB
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
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900