Good Day Folks,
I found the following code here on MSDN illustrating
master/detail.
You can see the original at the following URL.
http://msdn.microsoft.com/library/default.asp?
url=/library/en-
us/cpref/html/frlrfsystemdata datatableclasst opic.asp
It doesn't seem to do anything other than display the
master table. Does anyone know how to make this sample
work correctly ?
Thanks in advance
/Serge
<%@ Page Explicit="True" AutoEventWireup ="True"
Language="VB" Debug="true"%>
<%@ Import Namespace="Syst em" %>
<%@ Import Namespace="Syst em.Data" %>
<html>
<head>
<title>Master Detail</title>
</head>
<script language="VB" runat="server">
private myDataSet As DataSet
Sub Page_Load(sende r As Object, e As EventArgs)
MakeDataTables( )
End Sub
Private Sub MakeDataTables( )
' Run all of the functions.
MakeParentTable ()
MakeChildTable( )
MakeDataRelatio n()
BindToDataGrid( )
End Sub
Private Sub MakeParentTable ()
' Create a new DataTable.
Dim myDataTable As DataTable = new DataTable
("ParentTabl e")
' Declare variables for DataColumn and DataRow objects.
Dim myDataColumn As DataColumn
Dim myDataRow As DataRow
' Create new DataColumn, set DataType, ColumnName and
add to DataTable.
myDataColumn = New DataColumn()
myDataColumn.Da taType = System.Type.Get Type
("System.Int32" )
myDataColumn.Co lumnName = "id"
myDataColumn.Re adOnly = True
myDataColumn.Un ique = True
' Add the Column to the DataColumnColle ction.
myDataTable.Col umns.Add(myData Column)
' Create second column.
myDataColumn = New DataColumn()
myDataColumn.Da taType = System.Type.Get Type
("System.String ")
myDataColumn.Co lumnName = "ParentItem "
myDataColumn.Au toIncrement = False
myDataColumn.Ca ption = "ParentItem "
myDataColumn.Re adOnly = False
myDataColumn.Un ique = False
' Add the column to the table.
myDataTable.Col umns.Add(myData Column)
' Make the ID column the primary key column.
Dim PrimaryKeyColum ns(0) As DataColumn
PrimaryKeyColum ns(0)= myDataTable.Col umns("id")
myDataTable.Pri maryKey = PrimaryKeyColum ns
' Instantiate the DataSet variable.
myDataSet = New DataSet()
' Add the new DataTable to the DataSet.
myDataSet.Table s.Add(myDataTab le)
' Create three new DataRow objects and add them to the
DataTable
Dim i As Integer
For i = 0 to 2
myDataRow = myDataTable.New Row()
myDataRow("id") = i
myDataRow("Pare ntItem") = "ParentItem " + i.ToString
()
myDataTable.Row s.Add(myDataRow )
Next i
End Sub
Private Sub MakeChildTable( )
' Create a new DataTable.
Dim myDataTable As DataTable = New DataTable
("childTable ")
Dim myDataColumn As DataColumn
Dim myDataRow As DataRow
' Create first column and add to the DataTable.
myDataColumn = New DataColumn()
myDataColumn.Da taType= System.Type.Get Type
("System.Int32" )
myDataColumn.Co lumnName = "ChildID"
myDataColumn.Au toIncrement = True
myDataColumn.Ca ption = "ID"
myDataColumn.Re adOnly = True
myDataColumn.Un ique = True
' Add the column to the DataColumnColle ction.
myDataTable.Col umns.Add(myData Column)
' Create second column.
myDataColumn = New DataColumn()
myDataColumn.Da taType= System.Type.Get Type
("System.String ")
myDataColumn.Co lumnName = "ChildItem"
myDataColumn.Au toIncrement = False
myDataColumn.Ca ption = "ChildItem"
myDataColumn.Re adOnly = False
myDataColumn.Un ique = False
myDataTable.Col umns.Add(myData Column)
' Create third column.
myDataColumn = New DataColumn()
myDataColumn.Da taType= System.Type.Get Type
("System.Int32" )
myDataColumn.Co lumnName = "ParentID"
myDataColumn.Au toIncrement = False
myDataColumn.Ca ption = "ParentID"
myDataColumn.Re adOnly = False
myDataColumn.Un ique = False
myDataTable.Col umns.Add(myData Column)
myDataSet.Table s.Add(myDataTab le)
' Create three sets of DataRow objects, five rows
each, and add to DataTable.
Dim i As Integer
For i = 0 to 4
myDataRow = myDataTable.New Row()
myDataRow("chil dID") = i
myDataRow("Chil dItem") = "Item " + i.ToString()
myDataRow("Pare ntID") = 0
myDataTable.Row s.Add(myDataRow )
Next i
For i = 0 to 4
myDataRow = myDataTable.New Row()
myDataRow("chil dID") = i + 5
myDataRow("Chil dItem") = "Item " + i.ToString()
myDataRow("Pare ntID") = 1
myDataTable.Row s.Add(myDataRow )
Next i
For i = 0 to 4
myDataRow = myDataTable.New Row()
myDataRow("chil dID") = i + 10
myDataRow("Chil dItem") = "Item " + i.ToString()
myDataRow("Pare ntID") = 2
myDataTable.Row s.Add(myDataRow )
Next i
End Sub
Private Sub MakeDataRelatio n()
' DataRelation requires two DataColumn (parent and
child) and a name.
Dim myDataRelation As DataRelation
Dim parentColumn As DataColumn
Dim childColumn As DataColumn
parentColumn = myDataSet.Table s("ParentTable" ).Columns
("id")
childColumn = myDataSet.Table s("ChildTable") .Columns
("ParentID")
myDataRelation = new DataRelation("p arent2Child",
parentColumn, childColumn)
myDataSet.Table s("ChildTable") .ParentRelation s.Add
(myDataRelation )
End Sub
Private Sub BindToDataGrid( )
' Instruct the DataGrid to bind to the DataSet, with
the
' ParentTable as the topmost DataTable.
'DataGrid1.SetD ataBinding(myDa taSet,"ParentTa ble")
DataGrid1.DataS ource=myDataSet
DataGrid1.DataM ember="ParentTa ble"
DataGrid1.DataB ind()
End Sub
</script>
<body text="black" bgcolor="" link="blue" vlink="blue"
alink="blue" leftmargin="0" topmargin="0" marginheight="0 "
marginwidth="0" >
<center><font size="+2">Maste r/Detail</font></center>
<form id="MasterDetai l" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" />
</form>
</body>
</html>