Tooltip lost after SortItems (with workaround)

3 posts, 0 answers
  1. Matthew Johnson
    Matthew Johnson avatar
    10 posts
    Member since:
    Oct 2009

    Posted 04 Nov 2010 Link to this post

    This is an fyi post for anyone one who might be have a simular problem.  I plan on submitting a problem ticket as well.  

    I have a project which requires two listboxes (transfer back and forth).  The "select from listbox" contains a list of Clients (with each client having a corresponding time zone.  One of the requirements is have a dropdown containing time zones just below the "select from listbox".  When you select a timezone from the dropdown, the Listbox should select all Clients with matching timezones (so you can easily transfer all clients for that time zone). 

    No real problem so far, I simply added the RadListBoxItems to the Listbox one at a time looping through the datatable setting the time zone of the client to the tooltip of the RadListBoxItem.  With some javascript I snagged from the forums here I was able to loop through the listbox and compare the tooltip with the dropdown selected value, selecting the item if it matches.

    Instead of turning on AutoPostBackOnTransfer, I added a button "Sort Lists" that can be clicked if the user feels the need to sort the lists.  

    Here's where the problem occurs, it seems as though any RadListBoxItem that is moved during the SortItems process looses it's tooltip (if an item isn't moved the tooltip will reamin).

    I was able to work around this problem by adding an attribute to the RadListBoxItem (it seems attributes do persist after a sort) and then looping through the ListBox after SortItems and reassigning the Tooltip.

    markup :

    <table><tr>
         <td valign="top">
              <asp:Label ID="lblPracticeSelect" runat="server" Text="Practice Select:"></asp:Label><br />
              <telerik:RadListBox ID="rlbPracticeSelect" runat="server" Height="257px" Width="225px" 
                                      AllowTransfer="True" AllowTransferOnDoubleClick="True" EnableDragAndDrop="True" 
                     EnableMarkMatches="true" SelectionMode="Multiple" TransferToID="rlbPracticeSearch">
                        <ButtonSettings TransferButtons="All"  />
              </telerik:RadListBox>
                    <br />
                    <br />
              <asp:Label ID="Label3" runat="server" Text="Time Zone:" Visible="false" />
              <asp:DropDownList ID="ddlTimeZone" runat="server"  Width="185px" OnChange="selectItems()">
                   <asp:ListItem Selected="True" Text="Select Practice(s) in Time Zone" Value="0" />
                   <asp:ListItem Text="EST" Value="EST" />
                   <asp:ListItem Text="CST" Value="CST" />
                   <asp:ListItem Text="MST" Value="MST" />
                   <asp:ListItem Text="PST" Value="PST" />
                   <asp:ListItem Text="AKST" Value="AKST" />
                   <asp:ListItem Text="HST" Value="HST" />
              </asp:DropDownList>
         </td>
         <td align="left" valign="top">
              <asp:Label ID="lblPracticeSearch" runat="server" Text="Practice Search:"></asp:Label><br />
              <telerik:RadListBox ID="rlbPracticeSearch" runat="server" Width="180px" Height="257px" 
                        AllowTransfer="True" AllowTransferOnDoubleClick="True" EnableDragAndDrop="True" 
                        EnableMarkMatches="true" SelectionMode="Multiple" TransferToID="rlbPracticeSelect">
                        <ButtonSettings ShowTransfer="false" ShowTransferAll="false" />
              </telerik:RadListBox>
                    <br />
                    <br />
              <asp:Label ID="lblTimeZone" runat="server" Text=""></asp:Label>
              <asp:CustomValidator ID="cvPractice" runat="server" ValidationGroup="SearchSummary" 
                        Display="Dynamic" ErrorMessage="Please select at least one Practice." 
                        ClientValidationFunction="ValidatePractices"> </asp:CustomValidator>
         </td>
    <tr>
         <td  colspan=2>
              <asp:Button ID="btnSort" runat="server" Text="Sort Lists" Width="80px" />
         </td>
    </tr>
    </table>

    javascript:
    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
        <script language="javascript" type="text/javascript">        
         function filterListBox(sender, e) {
      
                var list = $find("<%= rlbPracticeSelect.ClientID %>");
                var tz = document.getElementById('<%=ddlTimeZone.ClientID %>');
      
                var items = list.get_items();
                for (var i = 0; i < items.get_count(); i++) {
                    var item = items.getItem(i);
                      
                    var itemTimeZone = item._element.title;
                    item.unselect();
                    if (itemTimeZone == tz.value) {
                        //list.transferToDestination(item);
                        item.select();
                        item.scrollIntoView();
                    }
                }
                 
            }</script>  
          
        </telerik:RadScriptBlock>

    code behind:
    Private Sub LoadPractices()
        Try
            rlbPracticeSelect.Items.Clear()
            rlbPracticeSearch.Items.Clear()
            Dim dt As DataTable = GetAllPractices()
            If dt.Rows.Count > 0 Then
                With rlbPracticeSelect
                    Dim dr As DataRow
                    For Each dr In dt.Rows
                        Dim rItem As New RadListBoxItem(dr("Name").ToString, dr("ID").ToString)
                        rItem.ToolTip = dr("TimeZone").ToString
                        rItem.Attributes.Add("TimeZone", dr("TimeZone").ToString)
                        .Items.Add(rItem)
                    Next
                End With
            End If
        Catch ex As Exception
            Dim sError As String = ex.Message
        Finally
        End Try
    End Sub

    when the sort button is clicked:
    Private Sub btnSort_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSort.Click
        rlbPracticeSearch.SortItems()
        rlbPracticeSelect.SortItems()
        Dim itmSelect As RadListBoxItem
        For Each itmSelect In rlbPracticeSelect.Items
            itmSelect.ToolTip = itmSelect.Attributes("TimeZone")
        Next
        Dim itmSearch As RadListBoxItem
        For Each itmSearch In rlbPracticeSearch.Items
            itmSearch.ToolTip = itmSearch.Attributes("TimeZone")
        Next
    End Sub

  2. Genady Sergeev
    Admin
    Genady Sergeev avatar
    1596 posts

    Posted 09 Nov 2010 Link to this post

    Hi Matthew Johnson,

    Could you please specify which version of the controls do you use? There used to be a similar issue with tooltips, when one is transferring items on the client, however, we have fixed it for the latest version.

    Sincerely yours,
    Genady Sergeev
    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. UI for ASP.NET Ajax is Ready for VS 2017
  4. Matthew Johnson
    Matthew Johnson avatar
    10 posts
    Member since:
    Oct 2009

    Posted 10 Nov 2010 Link to this post

    Sorry about that... I should have included that in my original post.

    I'm currently using version 2010.2.713.35. 

    I've haven't had time to upgrade to the latest version, but it's nice to know it's already been addressed.

    Thanks,
    Matt
Back to Top