Hello,
I'm creating a sub-menu dynamically, this menu is a template.
The template is not rendered, why please ?
This is the static code, which is functionnal :
| |
| <radM:RadMenu ID="rmFiles" runat="server" Skin="Vista" OnClientItemClicking="OnClicking"> |
| <Items> |
| <radM:RadMenuItem Text="Files" ImageUrl="Images\Folders\File.gif" Width="100%" Font-Bold="true"> |
| <Items> |
| <radM:RadMenuItem Value="Delete" Text="Delete file" ImageUrl="Images\Actions\Delete.gif" /> |
| <radM:RadMenuItem Value="Rename" Text="Rename file" ImageUrl="Images\Actions\Rename.gif"> |
| <Items> |
| <radM:RadMenuItem Value="EditRename"> |
| <ItemTemplate> |
| <asp:TextBox ID="txEditFile" runat="server" Width="250" MaxLength="255" /> |
| <asp:LinkButton ID="lkEditFile" runat="server" Text="OK" OnClick="OnFileEditing" /> |
| </ItemTemplate> |
| </radM:RadMenuItem> |
| </Items> |
| </radM:RadMenuItem> |
| </Items> |
| </radM:RadMenuItem> |
| </Items> |
| </radM:RadMenu> |
This is the "same" code but added dynamically, which is failed for template visibility :
| |
| Private Sub LoadMenu() |
| |
| |
| rmFiles.Items.Clear() 'rmFiles is a radMenu |
| Dim RootMenu As RadMenuItem = AddMenuItem(String.Empty, "Files") |
| rmFiles.Items.Add(RootMenu) |
| Dim DeleteMenu As RadMenuItem = AddMenuItem("Delete", "Delete file") |
| RootMenu.Items.Add(DeleteMenu) |
| Dim RenameMenu As RadMenuItem = AddMenuItem("Rename", "Rename file") |
| RootMenu.Items.Add(RenameMenu) |
| Dim EditRename As RadMenuItem = AddMenuItem("EditRename", String.Empty) |
| EditRename.ItemTemplate = New RenameTemplate() |
| RenameMenu.Items.Add(EditRename) |
| |
| End Sub |
| |
| |
| Private Function AddMenuItem(ByVal Value As String, ByVal Text As String) As RadMenuItem |
| |
| Dim rmItem As New RadMenuItem |
| rmItem.Value = Value |
| rmItem.Text = Text |
| |
| Return rmItem |
| |
| End Function |
| |
| Public Class RenameTemplate |
| Implements System.Web.UI.ITemplate |
| |
| Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn |
| |
| Dim txEditFile As New TextBox |
| txEditFile.Width = Unit.Pixel(250) |
| container.Controls.Add(txEditFile) |
| |
| Dim lkEditFile As New LinkButton |
| lkEditFile.Text = "OK" |
| 'AddHandler lkEditFile.Click, AddressOf lkEditFile_Click |
| container.Controls.Add(lkEditFile) |
| |
| End Sub |
| |
| End Class |
I notice that if the template is child of RootMenu (instead of subchild), the template is visible...
Thank you for help.
Etienne.