Telerik Forums
UI for ASP.NET AJAX Forum
4 answers
160 views

To give a little background, I have a RadSplitter set up with two panes - one for a RadTreeView and the other for "external content" (using URLs, but they are all internal to the site). The nodes in the tree are setup like this:

  • Root Node (database driven)
    • Static Node, ServerSideCallback expand method
      • X Nodes (database driven)
    • Static Node, ServerSide expand method (required for custom context menus)
      • X Nodes (database driven, custom context menus)

The entire TreeView object is setup as an AjaxUpdatedControl which, combined with the Javascript "node.showLoadingStatus()" method (in lieu of a LoadingPanel covering the entire tree), allows the nodes that are configured as ServerSide to appear to behave identically to the ServerSideCallback expanding nodes. This is setup as so:

<telerik:RadAjaxManager runat="server" ID="RadAjaxManager1" EnableAJAX="true">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="trProjects">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="trProjects" />
                <telerik:AjaxUpdatedControl ControlID="hvNodeToSelect" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
    <ClientEvents OnResponseEnd="ajaxCallback" />
</telerik:RadAjaxManager>

When a certain action occurs on the main RadPane (where the "external" content is at - internal pages so XSS is not an issue) the loaded page calls a function called "selectNode" on the parent (which contains the RadSplitter, TreeView, etc.) which looks like this:

//called from child pages to select the associated node
function selectNode(parent, child) {
    var parentNode = treeView.findNodeByValue(parent);
    setNodeToSelect(child);
  
    if (!parentNode.get_expanded()) {
        if (!parentNode.get_parent().get_expanded())
            parentNode.get_parent().expand();
  
        parentNode.expand();              
  
    } else {
        if (parentNode.get_expandMode() != 1) { //Server-side (encapsulated by RadAJAX)
            var childNode = treeView.findNodeByValue(child);
            childNode.set_selected(true);            
            nodeToSelect = null; //page-level javascript variable
        }
    }
}

The first thing it does is check to see if the parent node is expanded (all the way through the top-level root node) and expands down. For the purposes of this issue this is the block being called and not the other half (the "else" clause). When I execute the action that fires this the bottom-level child node (one of the database-driven X nodes as referenced above, the parent being the one with the ServerSideCallback expand mode) gets selected which is exactly what I want.

What I've noticed though is once I've utilized the "parentNode.expand();" method on a node that is ServerSide (which the RadAjaxManager makes appear as if no postback occurs) this functionality stops working. To better explain this, inside the method above there is a small function called setNodeToSelect called right at the beginning which looks like this:

function setNodeToSelect(value) {
    nodeToSelect = value;
    hvNodeToSelect.value = nodeToSelect;
}

This sets the page-level variable "nodeToSelect" equal to the value of the node that needs to select. It also sets a hidden field's value equal to that same one, but that has no bearing on this. Since "parentNode.expand();" is trying to expand a ServerSideCallback node that should fire the client-side "NodePopulated" event. I have that configured to do the actual node selection and the signature looks like this:

function trProjects_NodePopulated(sender, args) {
    var node = args.get_node();
  
    if (nodeToSelect != null) {
        treeView.findNodeByValue(nodeToSelect).set_selected(true);
        nodeToSelect = null;
    }
}

This seems to occur fine up until I have expanded the node that is setup as ServerSide for retrieving items (which is required because of a custom context menu per item). Once I have done that (with the RadAjaxManager making it appear a postback didn't occur) I can no longer call the "parentNode.expand();" methods nor does the NodePopulated event get fired. What is even stranger is calling "parentNode.expand();" doesn't throw any errors, instead it just fails to expand the ServerSideCallback node being referenced. The strangest part of all is if I do something like "alert(parentNode.get_expanded());" it returns True even though the node is not actually expanded!

I was tinkering with how this whole process worked and was finally able to get a Javascript error that might help point someone in the right direction on this. If I have the Static Node (the one with ServerSideCallback as the expand mode) already expanded what should occur is any action executed should automatically select the node it is associated with inside that "else" block above that starts out with "if (parentNode.get_expandMode() != 1)" since the parent is already expanded. This functionality works great up until I do something with the ServerSide node and then it starts erroring out with this: "this.get_element() is undefined" on line 1241 of one of the Telerik embedded Javascript files (ScriptResource.axd).

The line that fails (1241) is:

this.get_element().value=d

The line where this fails is immediately above this entry:

_registerSelectedNode:function(d){this._insertSortedHierarchicalIndexInArray(d._getHierarchicalIndex(),this._clientState.selectedNodes);

Any thoughts on this? Are there known issues with mixing ServerSide and ServerSideCallback nodes with an AjaxManager intervening on behalf of ServerSide nodes? Keep in mind that this only fails once I have interacted with the ServerSide node. Up until I do that everything works exactly as expected.

Thanks in advance!

Edit: Added "this.get_element().value=d" for better reference. Also some slight formatting changes (whitespace) for easier reading.
digitall
Top achievements
Rank 1
 answered on 07 May 2011
5 answers
116 views
Hi,

I have created my own custom RadGrid column control by extending GridEditableColumn class. I have placed two label controls in the cells. I have used InPlace edit mode for the grid. I have used the labels for edit as well as non edit mode for the cell. These controls show up in the page for both edit as well as non edit modes. The problem I'm facing is , whenever I fire the insert or update commands, the GridDataItem(from e.Item) shows that the cell contains no controls. Could somebody please help me on how to maintain the controls when the Insert or Update commands are fired.

Also once this is done I would also like to know, which method to override or event to register to, so that when I call the ExtractValues method on the GridDataItem(from e.Item) object, I get the value from that specific control in the cell that I will decide.

Thanks
Dennis
Top achievements
Rank 1
 answered on 07 May 2011
2 answers
84 views
Is it possible to have mouse over text on a pie chart so you can get the Legend text for an area to show up? The number alone and color isn't enough information for users that are color blind.

Thanks!
MarkX
Top achievements
Rank 1
 answered on 06 May 2011
3 answers
111 views
I have a RadWindow with a RadGrid. How can I close this window after the OnItemCommand event??

AHIA,
Larry...

<Windows>
           <telerik:RadWindow ID="GLLookupWindow" runat="server" Behaviors="Close" Width="900" Height="700" OnClientClose="UnhideIframe_OnClientClose">
            <ContentTemplate>
 
               <asp:Panel runat="server" ID="pnlGLLookup" Visible="true" TabIndex="-1">
 
                   <telerik:RadGrid AutoGenerateColumns="False" ID="GLLookup" OnItemCommand ="GLLookup_ItemCommand" AllowFilteringByColumn="true" OnItemCreated="GLLookup_ItemCreated"
                   DataSourceID="SqlDataSourceGLLookupwindow" AllowSorting="true" runat="server" PagerStyle-AlwaysVisible="true" AllowPaging="true" PageSize ="20" >
                       <GroupingSettings CaseSensitive="false" />
                       <MasterTableView DataKeyNames="GCMGRP,GCACCT,GCSACT,GCDEPT,GCDESC" >
                        <PagerStyle Mode="NumericPages" PageButtonCount="5" />
                           <Columns>
                               <telerik:GridBoundColumn HeaderText="Major" DataField="GCMGRP" UniqueName="GCMGRP" AllowFiltering="true"
                                   SortExpression="GCMGRP" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                   HeaderStyle-VerticalAlign="Bottom" />
                               <telerik:GridBoundColumn HeaderText="Acct" DataField="GCACCT" UniqueName="GCACCT" AllowFiltering="true"
                                   SortExpression="GCACCT" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                   HeaderStyle-VerticalAlign="Bottom" />
                               <telerik:GridBoundColumn HeaderText="Sub" DataField="GCSACT" UniqueName="GCSACT" AllowFiltering="true"
                                   SortExpression="GCSACT" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                   HeaderStyle-VerticalAlign="Bottom" />
                                <telerik:GridBoundColumn HeaderText="Dept/Loc" DataField="GCDEPT" UniqueName="GCDEPT" AllowFiltering="true"
                                   SortExpression="GCDEPT" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                   HeaderStyle-VerticalAlign="Bottom" />
                                <telerik:GridBoundColumn HeaderText="Description" DataField="GCDESC" UniqueName="GCDESC" AllowFiltering="true"
                                   SortExpression="GCDESC" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                   HeaderStyle-VerticalAlign="Bottom" />
                           </Columns>
                           <ItemStyle Wrap="false" />
                              <PagerStyle Mode="NumericPages" AlwaysVisible="true"></PagerStyle>
                       </MasterTableView>
                       <ClientSettings EnablePostBackOnRowClick="true" >
                       </ClientSettings>
                   </telerik:RadGrid>
               </asp:Panel>
 
             
             
            </ContentTemplate>
           </telerik:RadWindow>
</Windows>
larry reames
Top achievements
Rank 1
 answered on 06 May 2011
1 answer
76 views
Respected Person,

I don't want show some label items in Bar chart.
Please see attachment for information.

Please reply me how can I make it visible false.
Gimmik
Top achievements
Rank 1
 answered on 06 May 2011
3 answers
91 views
In both IE and FF...I have 3 text boxes, all 3 with misspelled words. I am using a button to trigger the spell check...the spell check dialog pops up and suggests correct words...I hit 'change'...then it says 'The Spell Check is complete!'...when I click 'OK' the text in the textboxes has not changed. While the code shows the textboxes as enabled=false, they are enabled=true at the time of spellcheck.

<script type="text/javascript">
        function spellCheck() {
            var spell = $find('<%= splContractSpellCheck.ClientID %>');
            spell.startSpellCheck();
        }
</script>
  
<asp:Button ID="btnContractSpellCheck" runat="server" Text="Spell Check" CssClass="buttonStyle" CausesValidation="False" UseSubmitBehavior="False" OnClientClick="javascript: spellCheck()" />
  
<telerik:RadSpell ID="splContractSpellCheck" runat="server" ControlsToCheck="txtContractSummary,txtContractPurpose,txtContractComments"                                 ButtonType="None" />
  
<asp:TextBox ID="txtContractSummary" runat="server" TextMode="MultiLine" MaxLength="1000" Width="100%" Height="34px" Enabled="false" />
<asp:TextBox ID="txtContractPurpose" runat="server" TextMode="MultiLine" MaxLength="1000" Width="100%" Height="86px" Enabled="false" />
<asp:TextBox ID="txtContractComments" runat="server" TextMode="MultiLine" MaxLength="1000" Width="100%" Height="52px" Enabled="false" />
Adam
Top achievements
Rank 1
 answered on 06 May 2011
1 answer
143 views
Hi,

Here I have RadSplitter control in master page which I need to collapse on click of some check box. Both check box and Splitter in master page only. I have applied JS as below but it can not find splitter control (It returns null in $find()).

JS which is in RadBlock

<telerik:RadCodeBlock runat="server" ID="radCodeBlock">
        <script type="text/javascript">

function onCheckBoxClick(chk) {
   debugger;
   if (chkText == "Toggle ToolBar") {
        var splitter = $find("<%= MainSplitter.ClientID %>");
        var pane = splitter.getPaneById("TopPane");
        var isCollapseSuccess = pane.collapse();
    }
}   
</script>
</telerik:RadCodeBlock>

HTML Code:

<telerik:RadSplitter ID="MainSplitter" runat="server" Height="100%" Width="100%"
               Orientation="Horizontal">             

                <telerik:RadPane ID="TopPane" runat="server" Height="100" Scrolling="none" >
                    <!-- Place the content of the pane here -->

                </telerik:RadPane>
</telerik:RadSplitter>

Please help me to resolve this.

Thanks & Regards,

Kaushal Jani
Svetlina Anati
Telerik team
 answered on 06 May 2011
2 answers
140 views
We need to export the data from our RadGrids to just a plain ASCII CSV file for some customers, but the RadGrid "marks the file content as Unicode" (see http://www.telerik.com/help/aspnet-ajax/grid-csv-export.html).

Is there any way to turn off the Unicode marker and just get a plain ASCII file?

We are using the latest version of the components with source license.

Thanks,

Mark Bentley
Tony
Top achievements
Rank 1
 answered on 06 May 2011
2 answers
77 views
I have a treeview inside a RadComboBox. I can set the selected node by using this code:
tree.SelectedNodes.Clear();
 
RadTreeNode node = tree.FindNodeByValue(idtema.ToString());
if (node != null)
{
    node.Selected = true;
}

And it works fine. The only problem is that the combo does not display the selected node.
If I expand the combo I see it has the correct node selected, but I want it to be shown on the top, when the combo is closed.
How can this be done?

Thank you.
Vicenc Masanas
Top achievements
Rank 1
 answered on 06 May 2011
1 answer
153 views
Hi,
I generate the window programmatically, this works , the iwndow pop's up but without any setting at all , somehow not one single setting renders ...  any idea ???, TKS!
***in my page ****
  
   
if (!IsPostBack)
        {
           GetTelerikWindow( placeholder );  }
  
**** In library *************
public static void GetTelerikWindow( PlaceHolder ph , string WindowId, string windowname, int height, int width, Boolean autosize)
        {
  
  
            RadWindowManager TWindowMgr = new RadWindowManager();
            TWindowMgr.ID="Manager_"+WindowId;
            TWindowMgr.EnableShadow = true;
              
              
  
             
            RadWindow TWindow = new RadWindow();
            TWindow.ID=WindowId;
            TWindow.Title=windowname;
            TWindow.ShowContentDuringLoad=false ;
            TWindow.Width=width;
            TWindow.Height=height;
            TWindow.VisibleStatusbar=false;
            TWindow.Modal = true;
            TWindow.AutoSize = autosize;
            TWindow.KeepInScreenBounds = true;
            TWindow.Skin = "WebBlue";
            TWindowMgr.Controls.Add(TWindow);
  
            ph.Controls.Add(TWindowMgr);
  
        }
Svetlina Anati
Telerik team
 answered on 06 May 2011
Narrow your results
Selected tags
Tags
+? more
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?