Please consider UI hierarchy below:
RadListView (ParentListView)
ParentListView Child 1 RadGrid
ParentListView Child 2RadGrid
ParentListView Child 3 RadListView Sub (Sub ListView)
Sub ListView Child 1 RadGrid
Sub ListView Child 2 RadGrid
Every grid above supports Add and Edit item functionality and every grid has it's Need Data Source event.
The problem is whenever I Add new record in ParentListView Child 2RadGrid (using template) it get reflected in UI, however when I try to add new record in Sub ListView Child 2 RadGrid it opens template view, user can enter value in it and click on Save button however it doesn't show newly added record in UI (the datasource object has new record in it).
(No Declarative DataSource is used for any control).
Any help is appreciated.
Thanks,
Shekhar
Here is the code
<
telerik:RadListView
runat
=
"server"
ID
=
"radListViewParent"
ItemPlaceholderID
=
"ParentPlaceHolder"
Skin
=
"Vista"
Font-Bold
=
"true"
EnableViewState
=
"true"
>
<
LayoutTemplate
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"99%"
>
<
tr
>
<
td
align
=
"left"
>
<
asp:PlaceHolder
ID
=
"ParentPlaceHolder"
runat
=
"server"
></
asp:PlaceHolder
>
</
td
>
</
tr
>
<
tr
style
=
"height: 20px;"
>
<
td
align
=
"left"
>
<
telerik:RadButton
ID
=
"btnAddNewItem"
Text
=
"Add New"
CommandName
=
"PerformInsert"
runat
=
"server"
>
</
telerik:RadButton
>
</
td
>
</
tr
>
</
table
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"99%"
>
<
tr
>
<
td
>
<
asp:HiddenField
runat
=
"server"
ID
=
"hdnFldId"
Value='<%# Bind("Id") %>' />
<
asp:Label
ID
=
"Label1"
runat
=
"server"
>Heading</
asp:Label
>
</
td
>
<
td
>
<
telerik:RadTextBox
runat
=
"server"
ID
=
"txtHeading"
Text='<%# Bind("Text") %>'>
</
telerik:RadTextBox
>
</
td
>
<
td
>
<
asp:ImageButton
runat
=
"server"
ID
=
"imgBtnDelete"
AlternateText
=
"Delete"
CommandName
=
"Delete"
CommandArgument='<%# Bind("Id") %>' OnClientClick="return CofirmHeadingDelete()"
ImageUrl="~/App_Themes/Theme1/images/delete_small_btn.gif" />
</
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"Label2"
runat
=
"server"
>Text</
asp:Label
>
</
td
>
<
td
colspan
=
"2"
>
<
telerik:RadEditor
runat
=
"server"
ID
=
"radHeadingText"
Height
=
"200"
Width
=
"500"
AutoResizeHeight
=
"false"
Content='<%# Bind("TextDiscription") %>'>
<
Tools
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"Bold"
Text
=
"Bold"
/>
<
telerik:EditorTool
Name
=
"Italic"
Text
=
"Italic"
/>
<
telerik:EditorTool
Name
=
"Underline"
Text
=
"Underline"
/>
<
telerik:EditorTool
Name
=
"InsertLink"
Text
=
"Insert Link Dialog"
/>
<
telerik:EditorTool
Name
=
"Unlink"
/>
</
telerik:EditorToolGroup
>
</
Tools
>
</
telerik:RadEditor
>
</
td
>
</
tr
>
<!--ParentListView Child 1 RadGrid -->
<
tr
>
<
td
>
</
td
>
<
td
colspan
=
"2"
>
<
fieldset
style
=
"width: 100%;"
>
<
legend
style
=
"font-weight: bold; font-size: larger; color: Black;"
>Ref Doc</
legend
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"ParentListViewChild1RadGrid"
AutoGenerateColumns
=
"false"
AllowSorting
=
"false"
AllowAutomaticUpdates
=
"true"
AllowAutomaticInserts
=
"true"
Skin
=
"Web20"
OnItemDataBound
=
"ParentListViewChild1RadGrid_ItemDataBound"
OnItemCommand
=
"ParentListViewChild1RadGrid_ItemCommand"
OnItemCreated
=
"ParentListViewChild1RadGrid_ItemCreated"
OnNeedDataSource
=
"ParentListViewChild1RadGrid_NeedDataSource"
>
<
MasterTableView
DataKeyNames
=
"Id"
CommandItemDisplay
=
"Bottom"
Width
=
"100%"
InsertItemDisplay
=
"Bottom"
>
<
Columns
>
<
telerik:GridTemplateColumn
ReadOnly
=
"true"
>
<
ItemTemplate
>
<
asp:Image
ID
=
"imgFiletypeIcon"
runat
=
"server"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"Description"
HeaderText
=
"Description"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"CustomFileName"
HeaderText
=
"CustomFileName"
ReadOnly
=
"true"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridAttachmentColumn
MaxFileSize
=
"1048576"
EditFormHeaderTextFormat
=
"Upload File:"
AttachmentDataField
=
"BinaryData"
DataTextField
=
"CustomFileName"
UniqueName
=
"AttachmentColumn"
>
</
telerik:GridAttachmentColumn
>
<
telerik:GridEditCommandColumn
HeaderStyle-Width
=
"30px"
EditImageUrl
=
"../../../App_Themes/Theme1/images/update_small_btn.png"
ButtonType
=
"ImageButton"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridTemplateColumn
>
<
ItemTemplate
>
<
asp:ImageButton
AlternateText
=
"Delete"
runat
=
"server"
ID
=
"imgBtnEnrollDeleteRefDoc"
CommandName
=
"Delete"
ImageUrl
=
"~/App_Themes/Theme1/images/delete_btn.png"
CommandArgument='<%# Eval("ArtifactId") %>'
OnClientClick="return confirm('Are you sure you want to delete this record?');" />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
AddNewRecordText
=
""
AddNewRecordImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
/>
<
EditFormSettings
EditColumn-ButtonType
=
"ImageButton"
FormTableStyle-CellSpacing
=
"5"
EditColumn-UpdateImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
EditColumn-CancelImageUrl
=
"../../../App_Themes/Theme1/images/cancel_small_btn.gif"
EditColumn-UpdateText
=
"Add"
EditColumn-CancelText
=
"Cancel"
>
<
FormTableStyle
CellSpacing
=
"5"
/>
<
FormMainTableStyle
CellPadding
=
"5"
CellSpacing
=
"5"
/>
</
EditFormSettings
>
<
NoRecordsTemplate
>
No records found.
</
NoRecordsTemplate
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnCommand
=
"gridCommand"
></
ClientEvents
>
</
ClientSettings
>
</
telerik:RadGrid
>
</
fieldset
>
</
td
>
</
tr
>
<!-- ParentListView Child 2RadGrid -->
<
tr
>
<
td
>
</
td
>
<
td
colspan
=
"2"
>
<
fieldset
style
=
"width: 100%;"
>
<
legend
style
=
"font-weight: bold; font-size: larger; color: Black;"
>URL</
legend
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"ParentListViewChild2RadGrid"
AutoGenerateColumns
=
"false"
AllowSorting
=
"false"
Skin
=
"Web20"
Width
=
"100%"
OnItemCommand
=
"ParentListViewChild2RadGrid_ItemCommand"
OnNeedDataSource
=
"ParentListViewChild2RadGrid_NeedDataSource"
OnItemDataBound
=
"ParentListViewChild2RadGrid_ItemDataBound"
>
<
MasterTableView
DataKeyNames
=
"HeadingId"
CommandItemDisplay
=
"Bottom"
Width
=
"100%"
ShowHeadersWhenNoRecords
=
"true"
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"Url"
DataField
=
"Url"
HeaderText
=
"Url"
ItemStyle-Width
=
"100px"
>
<
ItemStyle
Wrap
=
"true"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"Name"
DataField
=
"Name"
HeaderText
=
"Name"
ItemStyle-Width
=
"100px"
>
<
ItemStyle
Wrap
=
"true"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridEditCommandColumn
HeaderText
=
""
HeaderStyle-Width
=
"30px"
ButtonType
=
"ImageButton"
EditImageUrl
=
"../../../App_Themes/Theme1/images/update_small_btn.png"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridButtonColumn
ConfirmDialogType
=
"Classic"
ConfirmTitle
=
"Confirm Delete"
DataTextField
=
""
UniqueName
=
"Delete"
HeaderStyle-Width
=
"30px"
ConfirmText
=
"Are you sure you want to delete this record?"
ButtonType
=
"ImageButton"
ImageUrl
=
"~/App_Themes/Theme1/images/delete_btn.png"
Text
=
"Delete"
CommandArgument
=
""
CommandName
=
"Delete"
>
</
telerik:GridButtonColumn
>
</
Columns
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
AddNewRecordText
=
""
AddNewRecordImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
/>
<
EditFormSettings
>
<
FormTableItemStyle
Wrap
=
"true"
></
FormTableItemStyle
>
<
EditColumn
ButtonType
=
"ImageButton"
UpdateImageUrl
=
"../../../App_Themes/Theme1/images/update_small_btn.png"
InsertImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
UniqueName
=
"EditCommandColumn1"
CancelImageUrl
=
"../../../App_Themes/Theme1/images/cancel_small_btn.gif"
CancelText
=
""
>
</
EditColumn
>
<
FormTableButtonRowStyle
HorizontalAlign
=
"Right"
></
FormTableButtonRowStyle
>
</
EditFormSettings
>
<
NoRecordsTemplate
>
No records found.
</
NoRecordsTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
fieldset
>
</
td
>
</
tr
>
<!-- ParentListView Child 3 RadListView Sub (Sub ListView)-->
<
tr
>
<
td
colspan
=
"3"
>
<
telerik:RadListView
runat
=
"server"
ID
=
"ParentListViewChild3RadListViewSub"
ItemPlaceholderID
=
"SubListPlaceHolder"
Skin
=
"Vista"
Font-Bold
=
"true"
OnItemDataBound
=
"ParentListViewChild3RadListViewSub_ItemDataBound"
OnItemCommand
=
"ParentListViewChild3RadListViewSub_ItemCommand"
EnableViewState
=
"true"
DataSource='<%# Eval("SubHeadingsList") %>'>
<
LayoutTemplate
>
<
fieldset
style
=
"width: 100%; background-color: #f3f3f3;"
>
<
legend
style
=
"font-weight: bold; font-size: larger; color: Black;"
>Sub Headings</
legend
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"98%"
>
<
tr
>
<
td
>
<
asp:PlaceHolder
ID
=
"SubListPlaceHolder"
runat
=
"server"
></
asp:PlaceHolder
>
</
td
>
</
tr
>
<
tr
style
=
"height: 20px;"
>
<
td
align
=
"right"
>
<
telerik:RadButton
ID
=
"btnAddNewSubListItem"
Text
=
"Add New Sub Item"
runat
=
"server"
CommandName
=
"PerformInsert"
CommandArgument='<%# Bind("HeadingId") %>'>
</
telerik:RadButton
>
</
td
>
</
tr
>
</
table
>
</
fieldset
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"98%"
>
<
tr
>
<
td
>
<
telerik:RadTextBox
runat
=
"server"
ID
=
"txtHeading"
Text='<%# Bind("Text") %>'>
</
telerik:RadTextBox
>
</
td
>
<
td
>
<
asp:ImageButton
ID
=
"imgBtnSubLisItemDelete"
runat
=
"server"
AlternateText
=
"Delete"
CommandName
=
"Delete"
CommandArgument='<%# Bind("HeadingId") %>' OnClientClick="return CofirmSubHeadingDelete()"
ImageUrl="~/App_Themes/Theme1/images/delete_small_btn.gif" />
</
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"Label4"
runat
=
"server"
>Text</
asp:Label
>
</
td
>
<
td
colspan
=
"2"
>
<
telerik:RadEditor
runat
=
"server"
ID
=
"radEditorSubListItemText"
Height
=
"200"
Width
=
"500"
AutoResizeHeight
=
"false"
Content='<%# Bind("TextDiscription") %>'>
<
Tools
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"Bold"
Text
=
"Bold"
/>
<
telerik:EditorTool
Name
=
"Italic"
Text
=
"Italic"
/>
<
telerik:EditorTool
Name
=
"Underline"
Text
=
"Underline"
/>
<
telerik:EditorTool
Name
=
"InsertLink"
Text
=
"Insert Link Dialog"
/>
<
telerik:EditorTool
Name
=
"Unlink"
/>
</
telerik:EditorToolGroup
>
</
Tools
>
</
telerik:RadEditor
>
</
td
>
</
tr
>
<!--Grid Subheading Ref Doc-->
<
tr
>
<
td
>
</
td
>
<
td
colspan
=
"2"
>
<
fieldset
style
=
"width: 100%"
>
<
legend
style
=
"font-weight: bold; font-size: larger; color: Black;"
>Ref Doc</
legend
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"SubListViewChild1RadGrid"
AutoGenerateColumns
=
"false"
AllowSorting
=
"false"
AllowAutomaticUpdates
=
"true"
AllowAutomaticInserts
=
"true"
Skin
=
"Web20"
OnItemCommand
=
"SubListViewChild1RadGrid_ItemCommand"
OnItemDataBound
=
"SubListViewChild1RadGrid_ItemDataBound"
OnNeedDataSource
=
"SubListViewChild1RadGrid_OnNeedDataSource"
>
<
MasterTableView
DataKeyNames
=
"ArtifactId"
CommandItemDisplay
=
"Bottom"
Width
=
"90%"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"IsFileUploaded"
HeaderText
=
"ID"
ReadOnly
=
"true"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
ReadOnly
=
"true"
>
<
ItemTemplate
>
<
asp:Image
ID
=
"imgFiletypeIcon"
runat
=
"server"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"Description"
HeaderText
=
"Description"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"CustomFileName"
ReadOnly
=
"true"
HeaderText
=
"CustomFileName"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridAttachmentColumn
MaxFileSize
=
"1048576"
EditFormHeaderTextFormat
=
"Upload File:"
HeaderText
=
"File"
AttachmentDataField
=
"BinaryData"
DataTextField
=
"CustomFileName"
UniqueName
=
"AttachmentColumn"
>
</
telerik:GridAttachmentColumn
>
<
telerik:GridEditCommandColumn
HeaderStyle-Width
=
"30px"
ButtonType
=
"ImageButton"
EditImageUrl
=
"../../../App_Themes/Theme1/images/update_small_btn.png"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridTemplateColumn
>
<
ItemTemplate
>
<
asp:ImageButton
AlternateText
=
"Delete"
runat
=
"server"
ID
=
"imgSubHeadBtnDeleteRefDoc"
CommandName
=
"Delete"
ImageUrl
=
"~/App_Themes/Theme1/images/delete_btn.png"
CommandArgument='<%# Eval("ArtifactId") %>'
OnClientClick="return confirm('Are you sure you want to delete this record?');" />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
AddNewRecordText
=
""
AddNewRecordImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
/>
<
EditFormSettings
EditColumn-ButtonType
=
"ImageButton"
FormTableStyle-CellSpacing
=
"5"
EditColumn-UpdateImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
EditColumn-CancelImageUrl
=
"../../../App_Themes/Theme1/images/cancel_small_btn.gif"
EditColumn-UpdateText
=
"Save"
EditColumn-CancelText
=
"Cancel"
>
<
EditColumn
UniqueName
=
"EditCommandColumn"
>
</
EditColumn
>
<
FormTableStyle
CellSpacing
=
"5"
/>
<
FormMainTableStyle
CellPadding
=
"5"
CellSpacing
=
"5"
/>
</
EditFormSettings
>
<
NoRecordsTemplate
>
No records found.
</
NoRecordsTemplate
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnCommand
=
"gridCommand"
></
ClientEvents
>
</
ClientSettings
>
</
telerik:RadGrid
>
</
fieldset
>
</
td
>
</
tr
>
<!--Sub ListView Child 2 RadGrid -->
<
tr
>
<
td
>
</
td
>
<
td
colspan
=
"2"
>
<
fieldset
style
=
"width: 100%"
>
<
legend
style
=
"font-weight: bold; font-size: larger; color: Black;"
>URL</
legend
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"SubListViewChild2RadGrid"
AutoGenerateColumns
=
"false"
AllowSorting
=
"false"
Skin
=
"Web20"
Width
=
"100%"
OnNeedDataSource
=
"SubListViewChild2RadGrid_NeedDataSource"
OnItemCommand
=
"SubListViewChild2RadGrid_ItemCommand"
OnItemDataBound
=
"SubListViewChild2RadGrid_ItemDataBound"
>
<
MasterTableView
DataKeyNames
=
"ArtifactId"
CommandItemDisplay
=
"Bottom"
Width
=
"100%"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Url"
HeaderText
=
"Url"
ItemStyle-Width
=
"100px"
>
<
ItemStyle
Wrap
=
"true"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
HeaderText
=
"Name"
ItemStyle-Width
=
"100px"
>
<
ItemStyle
Wrap
=
"true"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridEditCommandColumn
HeaderText
=
""
HeaderStyle-Width
=
"30px"
ButtonType
=
"ImageButton"
EditImageUrl
=
"../../../App_Themes/Theme1/images/update_small_btn.png"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridButtonColumn
ConfirmDialogType
=
"Classic"
ConfirmTitle
=
"Confirm Delete"
DataTextField
=
""
UniqueName
=
"Delete"
HeaderStyle-Width
=
"30px"
ConfirmText
=
"Are you sure you want to delete this record?"
ButtonType
=
"ImageButton"
ImageUrl
=
"~/App_Themes/Theme1/images/delete_btn.png"
Text
=
"Delete"
CommandArgument
=
""
CommandName
=
"Delete"
>
</
telerik:GridButtonColumn
>
</
Columns
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
AddNewRecordText
=
""
AddNewRecordImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
/>
<
EditFormSettings
>
<
FormTableItemStyle
Wrap
=
"true"
></
FormTableItemStyle
>
<
EditColumn
UpdateText
=
""
UpdateImageUrl
=
"../../../App_Themes/Theme1/images/update_small_btn.png"
InsertText
=
""
InsertImageUrl
=
"../../../App_Themes/Theme1/images/add_small_btn.gif"
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn1"
CancelImageUrl
=
"../../../App_Themes/Theme1/images/cancel_small_btn.gif"
CancelText
=
""
>
</
EditColumn
>
<
FormTableButtonRowStyle
HorizontalAlign
=
"Right"
CssClass
=
"EditFormButtonRow"
></
FormTableButtonRowStyle
>
</
EditFormSettings
>
<
NoRecordsTemplate
>
No records found.
</
NoRecordsTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
fieldset
>
</
td
>
</
tr
>
</
table
>
</
ItemTemplate
>
<
ItemSeparatorTemplate
>
<
table
>
<
tr
style
=
"height: 20px;"
>
</
tr
>
</
table
>
</
ItemSeparatorTemplate
>
</
telerik:RadListView
>
</
td
>
</
tr
>
</
table
>
</
ItemTemplate
>
<
ItemSeparatorTemplate
>
<
table
>
<
tr
style
=
"height: 20px;"
>
</
tr
>
</
table
>
</
ItemSeparatorTemplate
>
</
telerik:RadListView
>