RadTreeView Problem

4 posts, 0 answers
  1. Deyan
    Deyan avatar
    15 posts
    Member since:
    Aug 2010

    Posted 08 Oct 2010 Link to this post

    I have a treeview

    1.<telerik:RadTreeView ID="RadTreeViewCombo" runat="server" DataFieldID="IdGroup" DataFieldParentID="IdParentGroup"
    2.                    DataTextField="Name" DataValueField="IdGroup" OnDataBound="RadTreeViewCombo_DataBound"
    3.                    DataSourceID="edsCosts" CheckBoxes="True" CheckChildNodes="True">
    4.                    <DataBindings>
    5.                        <telerik:RadTreeNodeBinding Depth="0" Expanded="false" />
    6.                    </DataBindings>
    7.                </telerik:RadTreeView>
    and filter (textbox) that search all nodes by Text.

    The problem is when a check node then filter by name (filter do only visible = false to unwanted nodes) 

    then from result nodes I check some nodes after submiting (press button) the property CheckedNodes.Count=0 ?!?!?

    If I do only filtering and then checking of result nodes or only checking without filtering there is no problem.

    Search algorithm:

    01.protected void btnSearch_Click(object sender, ImageClickEventArgs e)
    02.    {
    03.                SearchByName(RadTreeViewCombo.Nodes);
    04.                RadTreeViewCombo.ExpandAllNodes();
    05.    }
    06.  
    07.private void SearchByName(RadTreeNodeCollection radTreeNodeCollection)
    08.    {
    09.        foreach (RadTreeNode node in radTreeNodeCollection)
    10.        { RecursiveSearhInNodes(node); }
    11.  
    12.    }
    13.  
    14.    private void RecursiveSearhInNodes(RadTreeNode node)
    15.    {
    16.        if (!node.Text.ToLower().Contains(txtSearch.Text.Trim().ToLower()))
    17.        { node.Visible = false; }
    18.        else
    19.        { GoToParent(node.ParentNode); node.Visible = true; }
    20.  
    21.        foreach (RadTreeNode childNodes in node.Nodes)
    22.        { RecursiveSearhInNodes(childNodes); }
    23.    }
    24.  
    25.    private void GoToParent(RadTreeNode parentNode)
    26.    {
    27.        if (parentNode != null)
    28.        {
    29.            if (parentNode.ParentNode != null)
    30.                GoToParent(parentNode.ParentNode);
    31.  
    32.            parentNode.Visible = true;
    33.        }
    34.    }

  2. Nikolay Tsenkov
    Admin
    Nikolay Tsenkov avatar
    734 posts

    Posted 13 Oct 2010 Link to this post

    Hello Deyan,

    Are you inspecting the number of checked nodes on the client?
    If this is the case, than probably the problem is caused by the fact, that the controls with set on the server Visible=false, are not rendered and they don't  have any client representation.

    Hope this is helpful for you!


    Regards,
    Nikolay Tsenkov
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  3. Deyan
    Deyan avatar
    15 posts
    Member since:
    Aug 2010

    Posted 18 Oct 2010 Link to this post

    No its not on client side.

    I just have usual button that on click call

    1.protected void btnOk_Click(object sender, EventArgs e)
    2.{
    3.   string sChckedCosts = GetCheckedNodes();
    4.}
    01.public string GetCheckedNodes()
    02.{
    03.    StringBuilder sIds = new StringBuilder();
    04.    StringBuilder sNames = new StringBuilder();
    05.  
    06.foreach (RadTreeNode nodeChecked in RadTreeViewCombo.CheckedNodes)
    07.{
    08.    sIds.Append(nodeChecked.Value + ",");
    09.sNames.Append(nodeChecked.Text + ",");
    10.}
    11.  
    12.return string.Format("{0}#{1}", sIds.ToString(), sNames.ToString());<br>
    13.}
  4. Nikolay Tsenkov
    Admin
    Nikolay Tsenkov avatar
    734 posts

    Posted 21 Oct 2010 Link to this post

    Hi Deyan,

    Well, I asked if you are checking them on the client, because the time is the significant variable here to be taken in account. So, after some search has hided the checked nodes on the server, then they were not rendered and serialized on the client. Therefore after the second post-back, their Checked state will be lost.

    This, actually, is already logged as a bug in our issue tracking system and will be fixed.
    For now you can hide the nodes on the client-side - on the server you can mark them by adding a custom css class to them and on the client to style all elements in possession of this class to be with "display:none".
    You should not be using "visability:hidden", because the nodes will be rendered as a blank spot taking the size they would usually get if visible.

    Sorry for the caused inconvenience!


    Regards,
    Nikolay Tsenkov
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Back to Top