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
>