I think there might be some post talking about this, but I just cant find it.
My intention is to have Master table on the flat form, child on the 1st grid and grand child on the 2nd grid.
My problem now, is that I had followed the way to define the aspx, but I just can't get the grid bind, and I tried used profiler and it did not manage to tell if the sqldatasource is fired to get the data.
<table style="width: 100%;">
<tr><td style="height:5px;"></td></tr>
<tr>
<td class="formcellproperty"><asp:Label ID="lblLabelType" runat="server" Text="Type"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue">
<asp:RadioButton ID="optStockIn" runat="server" TabIndex="1" Text="Stock In" GroupName="StockInOut" Checked="true" />
<asp:RadioButton ID="optStockOut" runat="server" TabIndex="2" Text="Stock Out" GroupName="StockInOut" />
</td>
</tr>
<tr>
<td class="formcellproperty"><asp:Label ID="lblLabelTxnNo" runat="server" Text="No"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue">
<telerik:RadTextBox ID="txtTxnNo" runat="server" Text="" Enabled="false" TabIndex="3" MaxLength="20" CssClass="formtextbox-short"></telerik:RadTextBox>
</td>
<td class="formcellproperty"><asp:Label ID="lblLabelTxnDate" runat="server" Text="Date"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue">
<telerik:RadDatePicker ID="dtpTxnDate" runat="server" TabIndex="4"></telerik:RadDatePicker>
<asp:RequiredFieldValidator ID="rfvDtpTxnDate" runat="server" ErrorMessage="*" ControlToValidate="dtpTxnDate"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="formcellproperty"><asp:Label ID="txtLabelRefNo" runat="server" Text="Ref. No"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue">
<telerik:RadTextBox ID="txtRefNo" runat="server" TabIndex="5" MaxLength="20" CssClass="formtextbox-short"></telerik:RadTextBox>
</td>
<td class="formcellproperty"><asp:Label ID="Label2" runat="server" Text="P.O No"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue">
<telerik:RadTextBox ID="txtPONo" runat="server" TabIndex="6" MaxLength="20" CssClass="formtextbox-short"></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="rfvTxtPONo" runat="server" ErrorMessage="*" ControlToValidate="txtPONo"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="formcellproperty"><asp:Label ID="lblLabelVendor" runat="server" Text="Vendor"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue" colspan="3">
<telerik:RadComboBox ID="cboVendor" runat="server" TabIndex="7" ></telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvCboVendor" runat="server" ErrorMessage="*" ControlToValidate="cboVendor"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="formcellproperty"><asp:Label ID="lblLabelRemark" runat="server" Text="Remark"></asp:Label></td>
<td class="formcolonwidth">:</td>
<td class="formcellvalue" colspan="3">
<telerik:RadTextBox ID="txtRemark" runat="server" TabIndex="8" MaxLength="300" CssClass="formtextareabox-wide" TextMode="MultiLine"></telerik:RadTextBox>
</td>
</tr>
<tr>
<td colspan="5">
<asp:HiddenField ID="hidHeaderGuid" runat="server"></asp:HiddenField>
<asp:HiddenField ID="hidDetailGuid" runat="server"></asp:HiddenField>
</td>
</tr>
<tr>
<td colspan="6">
<table style="width: 100%;">
<tr><td style="height: 5px;"></td></tr>
<tr>
<td>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" Width="75px" Transparency="50">
<img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' style="border:0;" />
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnableAJAX="true" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="grdDetail">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="grdDetail" LoadingPanelID="RadAjaxLoadingPanel1" />
<telerik:AjaxUpdatedControl ControlID="grdSubdetail" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="grdDetail" runat="server" ShowStatusBar="true" DataSourceID="dsDetail"
AutoGenerateColumns="False" PageSize="3" AllowSorting="True" AllowMultiRowSelection="False"
AllowPaging="True" GridLines="None" OnItemUpdated="grdDetail_ItemUpdated" OnItemDeleted="grdDetail_ItemDeleted"
OnItemInserted="grdDetail_ItemInserted" OnInsertCommand="grdDetail_InsertCommand" OnItemCreated="grdDetail_ItemCreated">
<PagerStyle Mode="NumericPages"></PagerStyle>
<ClientSettings AllowExpandCollapse="True"></ClientSettings>
<MasterTableView DataKeyNames="stockdtl_guid" DataSourceID="dsDetail" AllowMultiColumnSorting="True" Width="100%" CommandItemDisplay="Top" Name="Detail" EditMode="InPlace">
<DetailTables>
<telerik:GridTableView DataKeyNames="stocksubdtl_guid" DataSourceID="dsSubdetail" Width="100%" runat="server" CommandItemDisplay="Top" Name="Sub Detail">
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="stockdtl_guid" MasterKeyField="stockdtl_guid" />
</ParentTableRelation>
<Columns>
<telerik:GridBoundColumn SortExpression="stocksubdtl_guid" HeaderText="Subdetail Guid" HeaderButtonType="TextButton"
DataField="stocksubdtl_guid" UniqueName="stocksubdtl_guid" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stocksubdtl_dtl_guid" HeaderText="Subdetail Detail Guid" HeaderButtonType="TextButton"
DataField="stocksubdtl_dtl_guid" UniqueName="stocksubdtl_dtl_guid" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stocksubdtl_serial_num" HeaderText="Serial No" HeaderButtonType="TextButton"
DataField="stocksubdtl_serial_num" UniqueName="stocksubdtl_serial_num">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stocksubdtl_part_num" HeaderText="Part No." HeaderButtonType="TextButton"
DataField="stocksubdtl_part_num" UniqueName="stocksubdtl_part_num">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stocksubdtl_qty" HeaderText="Quantity" HeaderButtonType="TextButton"
DataField="stocksubdtl_qty" UniqueName="stocksubdtl_qty">
</telerik:GridBoundColumn>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn1">
<HeaderStyle Width="20px" />
<ItemStyle CssClass="MyImageButton" />
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn ConfirmText="Are you sure want to deactivate this sub detail?" ButtonType="ImageButton"
CommandName="Delete" Text="Delete" UniqueName="DeleteColumn1">
<HeaderStyle Width="20px" />
<ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
</telerik:GridButtonColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="stockdtl_guid" HeaderText="Detail Guid" HeaderButtonType="TextButton"
DataField="stockdtl_guid" UniqueName="stockdtl_guid" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stockdtl_hdr_guid" HeaderText="Detail Header Guid" HeaderButtonType="TextButton"
DataField="stockdtl_hdr_guid" UniqueName="stockdtl_hdr_guid" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stockdtl_product_guid" HeaderText="Product" HeaderButtonType="TextButton"
DataField="stockdtl_product_guid" UniqueName="stockdtl_product_guid">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stockdtl_batch_no" HeaderText="Batch No"
HeaderButtonType="TextButton" DataField="stockdtl_batch_no" UniqueName="stockdtl_batch_no">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stockdtl_qty" HeaderText="Quantity" HeaderButtonType="TextButton"
DataField="stockdtl_qty" UniqueName="stockdtl_qty">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="stockdtl_cost" HeaderText="Cost" HeaderButtonType="TextButton"
DataField="stockdtl_cost" UniqueName="stockdtl_cost">
</telerik:GridBoundColumn>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn2">
<HeaderStyle Width="20px" />
<ItemStyle CssClass="MyImageButton" />
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn ConfirmText="Are you sure want to deactivate this detail?" ButtonType="ImageButton"
CommandName="Delete" Text="Delete" UniqueName="DeleteColumn2">
<HeaderStyle Width="20px" />
<ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<asp:SqlDataSource ID="dsDetail" runat="server" SelectCommand="exec usp_Master_SelectStockDetail @stockdtl_guid, @stockdtl_hdr_guid" SelectCommandType="StoredProcedure" >
<SelectParameters>
<asp:Parameter Name="stockdtl_guid" Type="String" />
<asp:ControlParameter ControlID="hidHeaderGuid" PropertyName="Value" Type="String" Name="stockdtl_hdr_guid" DefaultValue="" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="dsSubdetail" runat="server" SelectCommand="exec usp_Master_SelectStockSubDetail @stocksubdtl_guid, @stocksubdtl_dtl_guid" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="stocksubdtl_guid" Type="String" />
<asp:ControlParameter ControlID="hidDetailGuid" PropertyName="Value" Type="String" Name="stocksubdtl_dtl_guid" />
</SelectParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
</td>
</tr>
</table>