This is a migrated thread and some comments may be shown as answers.

Hide <li> element of RadPanelItem

7 Answers 356 Views
PanelBar
This is a migrated thread and some comments may be shown as answers.
Tonino
Top achievements
Rank 1
Tonino asked on 12 Nov 2013, 12:46 PM
Hello!

I have a RadPanelBar with some items. Now I would like to hide some RadPanelItems using 
style="display: none;" (instead of Visible=false) as I need the data inside RadPanelItem on postpack.
The RadPanelItem hides as expected, but there are still <li> elements visible.

Is there a way to hide this <li> elements too?

Regards,
Tonino.

7 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 14 Nov 2013, 04:48 AM
Hi Tonino,

Please have a look into the code snippet to hide the List element of RadPanelItem and show the List element  on RadButton OnClick event.

ASPX:
<telerik:RadPanelBar ID="RadPanelBar1" runat="server">
    <Items>
        <telerik:RadPanelItem Text="PanelItem1" runat="server">
        </telerik:RadPanelItem>
        <telerik:RadPanelItem Text="PanelItem2" runat="server" Style="display: none;">
            <ItemTemplate>
                <ul id="List1" runat="server" style="display: none;">
                    <li>List 1 </li>
                    <li>List 2</li>
                    <li>List 3</li>
                </ul>
            </ItemTemplate>
        </telerik:RadPanelItem>
    </Items>
</telerik:RadPanelBar>
<telerik:RadButton ID="RadButton1" runat="server" Text="Show PanelItem" OnClick="RadButton1_Click">
</telerik:RadButton>

C#:
protected void RadButton1_Click(object sender, EventArgs e)
{
    RadPanelItem item = RadPanelBar1.FindItemByText("PanelItem2");
    item.Style.Add("display", "block");
    System.Web.UI.HtmlControls.HtmlGenericControl list = (System.Web.UI.HtmlControls.HtmlGenericControl)item.FindControl("List1");
    list.Style.Add("display", "block");
}

Thanks,
Shinu.
0
Tonino
Top achievements
Rank 1
answered on 14 Nov 2013, 07:49 AM
Hi Shinu

Thanks for your reply!

Your code works as expected. I forgot to mention that I am using the classic RadPanelItem..

I replaced the controls in your code with the classic controls and the problem occurs there.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RadPanelBarClassic.aspx.cs" Inherits="RadPanelBar" %>
 
<%@ Register Assembly="RadPanelbar.Net2" Namespace="Telerik.WebControls" TagPrefix="radP" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
       <radP:RadPanelBar ID="RadPanelBar1" runat="server">
          <Items>
             <radP:RadPanelItem Text="PanelItem1" runat="server">
             </radP:RadPanelItem>
             <radP:RadPanelItem Text="PanelItem2" runat="server" Style="display: none;">
                <ItemTemplate>
                   <ul id="List1" runat="server" style="display: none;">
                      <li>List 1 </li>
                      <li>List 2</li>
                      <li>List 3</li>
                   </ul>
                </ItemTemplate>
             </radP:RadPanelItem>
          </Items>
       </radP:RadPanelBar>
 
       <asp:Button ID="ShowPanelItem" runat="server" Text="Show PanelItem" OnClick="ShowPanelItem_Click" />
       <asp:Button ID="HidePanelItem" runat="server" Text="Hide PanelItem" OnClick="HidePanelItem_Click" />
 
    </div>
    </form>
</body>
</html>

Attached you find a picture that shows that the hidden PanelBarItem is still using some space. Upgrading to the new telerik controls is not an option for now.

Regards,
Tonino.
0
Mário
Top achievements
Rank 1
answered on 17 Jun 2014, 04:50 PM
Hello,

About the RadPanelItem. I could use a little help.

I want to do a simple thing: when I click in a RadPanelItem, a new RadPanelItem will be created under the clicked one. When I click in the new RadPanelItem, it desappears and shows the content of the first RadPanelItem clicked.
                                        
I have this to indicate what I am trying to do:

<telerik:RadPanelItem ImageUrl="Images/Menu/NovosProcessos.gif" Text="Processos Novos" Value="NovosProcessos.aspx" Selected="true" />
<telerik:RadPanelItem ImageUrl="Images/Menu/ProcessosPendentes.gif" Text="Os Meus Processos" Value="ListaProcessos.aspx?Pesquisa=0" />
<%--<telerik:RadPanelItem ImageUrl="Images/Botao/back.gif" Text="Voltar ao Processo" Value="ListaProcessos.aspx?Pesquisa=0" Visible="false"/>--%>

And this for a beggining, which is not working for me:

protected void RadPanelbar1_ItemClick(object sender, RadPanelBarEventArgs e)
{
    if (e.Item.Owner is RadPanelItem)
    {
        RadPanelItem parentItem = (RadPanelItem)e.Item.Owner;
 
        switch (parentItem.Text)
        {
            case "Os Meus Processos":
                RadPanelItem NewItem = new RadPanelItem();
                NewItem.Text = "New " + e.Item.Text;
                //Adds item to the Items Collection of the item's owner
                e.Item.Owner.Items.Add(NewItem);
                break;
        }
    }
}

If you could help i would vastly appreciate.
Thanks,
Mário

 
0
Mário
Top achievements
Rank 1
answered on 17 Jun 2014, 05:05 PM
Ok, i noted some wrong references above but it's not working anyway:

protected void RadPanelbar1_ItemClick(object sender, RadPanelBarEventArgs e)
{
    if (e.Item.Owner is RadPanelItem)
    {
        RadPanelItem parentItem = (RadPanelItem)e.Item.Owner;
 
        switch (parentItem.Text)
        {
            case "Os Meus Processos":
                RadPanelItem NewItem = new RadPanelItem();
                NewItem.Text = "New " + parentItem.Text;
                //Adds item to the Items Collection of the item's owner
                parentItem.Items.Add(NewItem);
                break;
        }
    }
}
0
Princy
Top achievements
Rank 2
answered on 18 Jun 2014, 07:18 AM
Hi Mário,

Please try the below sample code snippet to add a new RadPanelItem dynamically.

ASPX:
<telerik:RadPanelBar ID="rpnlDemo" runat="server" OnItemClick="rpnlDemo_ItemClick">
    <Items>
        <telerik:RadPanelItem ImageUrl="Images/Menu/NovosProcessos.gif" Text="Processos Novos" Value="NovosProcessos.aspx" Selected="true" />
        <telerik:RadPanelItem ImageUrl="Images/Menu/ProcessosPendentes.gif" Text="Os Meus Processos" Value="ListaProcessos.aspx?Pesquisa=0" />
    </Items>
</telerik:RadPanelBar>

C#:
protected void rpnlDemo_ItemClick(object sender, Telerik.Web.UI.RadPanelBarEventArgs e)
{
    RadPanelItem panelItem = (RadPanelItem)e.Item;
    switch (panelItem.Text)
    {
        case "Processos Novos":
            RadPanelItem NewItem = new RadPanelItem();
            NewItem.Text = "New " + e.Item.Text;
            panelItem.Items.Add(NewItem);
            break;
        case "Os Meus Processos":
            RadPanelItem NewItem1 = new RadPanelItem();
            NewItem1.Text = "New " + e.Item.Text;
            panelItem.Items.Add(NewItem1);
            break;
    }
}

Thanks,
Princy.
0
Mário
Top achievements
Rank 1
answered on 18 Jun 2014, 10:40 AM
Thanks Prince.

But, besides i had shown the intention in creating a RadPanelItem dinamically by the snipped i provided, this isn't what i really want to do.

I really want to use the Visible property or semething alike.

Like i explained, now in a new way: when I click in a RadPanelItem, a new RadPanelItem will be MADE VISIBLE under the clicked one. When I click in the new RadPanelItem, it will be MADE INVISIBLE and shows the content of the first RadPanelItem clicked.

So, i want something like this:

<telerik:RadPane runat="server" ID="contentPane" Scrolling="none">
                <telerik:RadSplitter runat="server" ID="RadSplitter2" BorderStyle="None" PanesBorderSize="0">
                    <telerik:RadPane runat="Server" ID="leftPane" Width="240px" MinWidth="240" MaxWidth="600"
                        Scrolling="None">
                        <telerik:RadPanelBar runat="server" ID="RadPanelBar1" Width="100%" Height="100%" ExpandMode="FullExpandedItem"
                            OnClientItemClicked="onItemClicking" OnItemClick="rpnl_ItemClick">
                            <Items>
                                <telerik:RadPanelItem Text="Processos" ImageUrl="~/Images/Menu/Processos_Big.png" Expanded="true">
                                    <Items>
                                        <telerik:RadPanelItem ImageUrl="Images/Menu/NovosProcessos.gif" Text="Processos Novos" Value="NovosProcessos.aspx" Selected="true" />
                                        <telerik:RadPanelItem ImageUrl="Images/Menu/ProcessosPendentes.gif" Text="Os Meus Processos" Value="ListaProcessos.aspx?Pesquisa=0" />
                                        <telerik:RadPanelItem ImageUrl="Images/Botao/back.gif" Text="Voltar ao Processo" Value="ListaProcessos.aspx?Pesquisa=0" Visible="false"/>
                                        <telerik:RadPanelItem ImageUrl="Images/Menu/PesquisarProcessos.gif" Text="Pesquisa Processos" Value="ListaProcessos.aspx?Pesquisa=1">
                                            <Items>
                                                <telerik:RadPanelItem>
                                                    <ItemTemplate>
                                                        <table width="100%">
                                                            <tr>...

And for start i'm using this:

protected void rpnl_ItemClick(object sender, Telerik.Web.UI.RadPanelBarEventArgs e)
{
    RadPanelItem panelItem = (RadPanelItem)e.Item.Owner;
    switch (panelItem.Text)
    {
        case "Os Meus Processos":
            panelItem.Items.FindItemByText("Voltar ao Processo").Visible = true;
            break;
    }
}

But the rpnl_ItemClick event overides the default/defined value of the RadPanelItem for every RadPanelItem.

So, the "links"/values in the RadPanelItem don't work anymore. And the RadPanelItem i want to make visible is not shown visible.

So, i don't actually know what to do. It seams like a very simple thing. Click in a RadPanelItem and make another visible. Clicking the new one visible loads the "link"/value of the first RadPanelItem that was clicked. Just this.

If you could give further help i apreciate. I'm new at this.

Thank you,
Mário








0
Princy
Top achievements
Rank 2
answered on 19 Jun 2014, 05:07 AM
Hi Mário,

Please have a look into the sample code snippet which will show the ChildPanelItem by clicking on the ParentPanelItem and hide it when again clicking on the ChildPanelItem.

ASPX:
<telerik:RadPanelBar ID="rpnlDemo" runat="server" OnItemClick="rpnlDemo_ItemClick">
    <Items>
        <telerik:RadPanelItem ImageUrl="Images/Menu/NovosProcessos.gif" Text="Processos Novos" Value="NovosProcessos.aspx" Selected="true">
            <Items>
                <telerik:RadPanelItem Text="New Processos Novos" Visible="false">
                </telerik:RadPanelItem>
            </Items>
        </telerik:RadPanelItem>
        <telerik:RadPanelItem ImageUrl="Images/Menu/ProcessosPendentes.gif" Text="Os Meus Processos" Value="ListaProcessos.aspx?Pesquisa=0">
            <Items>
                <telerik:RadPanelItem Text="New Os Meus Novos" Visible="false">
                </telerik:RadPanelItem>
            </Items>
        </telerik:RadPanelItem>
    </Items>
</telerik:RadPanelBar>

C#:
protected void rpnlDemo_ItemClick(object sender, Telerik.Web.UI.RadPanelBarEventArgs e)
{
    RadPanelItem panelItem = (RadPanelItem)e.Item;
    switch (panelItem.Text)
    {
        case "Processos Novos":
            panelItem.Items.FindItemByText("New Processos Novos").Visible = true;
            break;
        case "Os Meus Processos":
            panelItem.Items.FindItemByText("New Os Meus Novos").Visible = true;
            break;
        default:
            panelItem.Visible = false;
            break;
    }
}

Let me know if you have any concern.
Thanks,
Princy.
Tags
PanelBar
Asked by
Tonino
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Tonino
Top achievements
Rank 1
Mário
Top achievements
Rank 1
Princy
Top achievements
Rank 2
Share this question
or