Telerik Forums
UI for ASP.NET AJAX Forum
3 answers
235 views

Hi,

I work on a large, enterprise application built with many user controls.  The user controls have NO ASCX, they are completely defined at runtime in CS files.  Additionally, when developing user controls for the application and implementing new functionality, I don't have control over the framework or hierarchy of the parent controls which will consume my user controls.  They might be nested 5 layers deep, user control on top of user control.

I've seen many posts about the perils of using RadAjaxManager with UpdatePanels, but I don't have a choice in the matter and I haven't encountered the same issues others have reported.  So I apologize if this is redundant but I've not seen anything about my scenario or the strange behavior I'm seeing.

Basically, if a parent up the control hierarchy employs an UpdatePanel, when the AsyncUpload control posts pack (using RadAjaxManager), the ajax response is improperly formatted and the ajax path to the RadAjaxManager target control(s) actually appears in the html markup and that containers child controls are rendered twice.  The html render is completely broken as you can see in the mock up I have included.  I think this may be a bug in RadAjaxManager.  

I'm including code for 3 files - 3 layers of hierarchy, which demonstrates the issue.

fileUpload.aspx
ParentControl.cs (created by fileUpload)
UploadControl.cs (created by ParentControl) <-- this is the only one I have control over.

Notes:
Keep in mind that if we equate this to my situation, UploadControl is the only one I can change, I don't have access to ParentControl or fileUpload.
In the demo app, the issue only happens if the UpdateMode of the panel in ParentControl.cs is set to Always.  This has something to do with the fact that everything in UloadControl sits on a generic Panel.  If I remove the Panel and just drop the objects in UploadControl directly in the Controls collection, then the ajax render will be messed up regardless of the UpdateMode setting in the ParentControl.  Changing the UpdateMode in the ParentControl is not an option, there are often good reasons why it's set to Always - other children of the parent may rely on that setting.

As always, thanks in advance,
JD

fileUpload.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="fileUpload.aspx.cs" Inherits="TelerikApp.fileUpload" %>
 
<!DOCTYPE html>
 
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     
    </div>
    </form>
</body>
</html>

fileUpload.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using TelerikApp.Controls;
 
namespace TelerikApp
{
    public partial class fileUpload : System.Web.UI.Page
    {
        protected WebControl _DivPageContent = new WebControl(HtmlTextWriterTag.Div);
 
 
        protected void Page_Init(object sender, EventArgs e)
        {
 
            this._DivPageContent.Controls.Add((Control)(new ParentControl()));
            _DivPageContent.ID = "_DivPageContent";
            this.form1.Controls.Add(_DivPageContent);
 
            RadAjaxManager manager = new RadAjaxManager();
            manager.ID = "RadAjaxManager1";                
            this.form1.Controls.Add(manager);              
        }
    }
}


ParentControl.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
 
namespace TelerikApp.Controls
{
    public class ParentControl : WebControl
    {
        private RadButton _someButton = new RadButton();
        UpdatePanel _update = new UpdatePanel();
        UploadControl _upLoad = null;
 
        protected override void OnInit(EventArgs e)
        {
            this._someButton.ID = "SomeButton";
            this._someButton.Text = "Click Me";
            this._someButton.AutoPostBack = true;
            this._someButton.Click += _someButton_Click;
 
            this._update.ID = "myUpdatePanel";
            this._update.UpdateMode = UpdatePanelUpdateMode.Always; //.Conditional Fixes issue in some cases
 
            this._upLoad = new UploadControl();
            this._upLoad.ID = "myUpLoadControl";
 
            this._update.ContentTemplateContainer.Controls.Add(this._upLoad);
 
            this._update.ContentTemplateContainer.Controls.Add(new LiteralControl("<br/><br/>More Controls on the UpdatePanel<br/>"));
            this._update.ContentTemplateContainer.Controls.Add(this._someButton);
            this.Controls.Add(_update);
 
            base.OnInit(e);
        }
 
        void _someButton_Click(object sender, EventArgs e)
        {
            //any silly functionality
            if (this._someButton.ToolTip == "") this._someButton.ToolTip = "0";
            int count = int.Parse(this._someButton.ToolTip) + 1;
            this._someButton.Text = "You've Clicked " + count.ToString() + " times";
            this._someButton.ToolTip = (count).ToString();
        }
    }
}


UploadControl.cs
using System;
using System.Threading;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
 
namespace TelerikApp.Controls
{
    public class UploadControl : WebControl
    {
        private RadButton _btUpload = new RadButton();
        private RadAsyncUpload _fiInput = new RadAsyncUpload();
        private DropDownList _DdDocumentTypes = null;
        private Label _lbl = new Label();
        private RadAjaxManager _ajaxManager = new RadAjaxManager();
        private Panel _DocUploadControlPanel = new Panel();
        private RadAjaxLoadingPanel _ajaxLoadingPanel = null;
 
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
 
            ScriptManager scriptManager = new ScriptManager();
            scriptManager.ID = "scriptManager";
            this.Page.Form.Controls.Add(scriptManager);
 
            this._lbl.ID = "_lbl";
            this._lbl.Text = "";
 
            this._DocUploadControlPanel.ID = "_DocUploadControlPanel";
            this._DocUploadControlPanel.CssClass += " docUploadControlPanel";
            this._DocUploadControlPanel.Style.Add("display", "inline-block");
            this._DocUploadControlPanel.BackColor = System.Drawing.Color.LightBlue;
 
            this._DdDocumentTypes = new DropDownList();
            this._DdDocumentTypes.ID = "DDLDocumentTypes";
            this._DdDocumentTypes.EnableViewState = false;
            this._DdDocumentTypes.AutoPostBack = false;
            this._DdDocumentTypes.Items.Add(new ListItem("type1"));
            this._DdDocumentTypes.Items.Add(new ListItem("type2"));
 
            this._ajaxLoadingPanel = new RadAjaxLoadingPanel();
            this._ajaxLoadingPanel.ID = "_ajaxLoadingPanel";
            this._ajaxLoadingPanel.Transparency = 50;
            this._ajaxLoadingPanel.BackColor = System.Drawing.Color.DarkGray;
            this._ajaxLoadingPanel.Skin = "Default";
 
            this._fiInput.ID = "FileInput";
            this._fiInput.MultipleFileSelection = Telerik.Web.UI.AsyncUpload.MultipleFileSelection.Disabled;
            this._fiInput.FileUploaded += FileUploaded;
 
            this._btUpload.ID = "UploadButton";
            this._btUpload.CausesValidation = false;
            this._btUpload.Text = "Upload";
 
            DataBind();
 
            this._DocUploadControlPanel.Controls.Add(this._ajaxLoadingPanel);
            this._DocUploadControlPanel.Controls.Add(this._DdDocumentTypes);
            this._DocUploadControlPanel.Controls.Add(this._fiInput);
            this._DocUploadControlPanel.Controls.Add(this._btUpload);
            this._DocUploadControlPanel.Controls.Add(new LiteralControl("<br/>"));
            this._DocUploadControlPanel.Controls.Add(this._lbl);
            this.Controls.Add(_DocUploadControlPanel);
 
        }
 
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            _ajaxManager = RadAjaxManager.GetCurrent(Page);
            _ajaxManager.AjaxSettings.AddAjaxSetting(this._btUpload, this._DocUploadControlPanel, this._ajaxLoadingPanel);
            //_ajaxManager.AjaxSettings.AddAjaxSetting(_btUpload, _lbl);
 
        }
 
        private void FileUploaded(object sender, FileUploadedEventArgs e)
        {
            Thread.Sleep(2000);
            _lbl.Text = "UPLOADED " + e.File.FileName + " TYPE: " + this._DdDocumentTypes.SelectedValue;
            _lbl.BackColor = System.Drawing.Color.LightGreen;
        }
 
    }
 
}


 

Maria Ilieva
Telerik team
 answered on 27 Feb 2014
1 answer
196 views
Hello Team,

I am using telerik treeview with silk skin, but now my requirement is that i want to customize my treeview skin. i tried a lot on this but it dn't work. there are various problem which i facing and also mention my requirement:
1: how can i hide the defaults dotted images.
2: how can i remove the border width of node.
3. Make Parents node in different colour.
4. Change Colour on mouse over .


I have attached the screen shot of demo which i want in my project and also attached the css of customize skin of treeview.
Please help me out how can i solve my problem. 
Magdalena
Telerik team
 answered on 27 Feb 2014
5 answers
2.8K+ views
Hello,

Just out of curiosity, what are the RadCodeBlock and RadScriptBlock controls used for?  What is their purpose?  What advantages does the RadScriptBlock give you over defining your own <script></script> tags without it?

Thanks.
Maria Ilieva
Telerik team
 answered on 27 Feb 2014
0 answers
98 views
Header Context Menu for Column max count
Մուշեղ
Top achievements
Rank 1
 asked on 27 Feb 2014
4 answers
329 views
Let's say I have a grid containing a set of Schools, and each of the schools has a detail table containing a list of courses. I'm looking for a way to filter the schools and courses by course title through the use of a FilterExpression. As of now, I am iterating through each school item and and setting the FilterExpression of the NestedTableView. Not only is this method cumbersome, but it only filters the courses, not the schools, so any schools without courses after filtering display "No child records to display." 
Angel Petrov
Telerik team
 answered on 27 Feb 2014
3 answers
185 views
The standard RadEditor lacks a dialog to insert/edit DIV elements, so I built my own custom dialog to be able to do that.

Inserting the DV element works fine. However, editing an existing DIV does not. Instead of replacing the existing DIV element, a new DIV is created within the existing DIV.

Telerik.Web.UI.Editor.CommandList["InsertDIV"] = function (commandName, editor, args) {
            var argument = null, elem = editor.getSelectedElement(); //returns the selected element.  
 
            if (elem && elem.tagName && elem.tagName == "DIV") {
                editor.selectElement(elem);
                argument = elem;
            }
            else {
                var l_sContent = editor.getSelectionHtml();
                if (l_sContent == '') { l_sContent = 'Inhoud DIV...'; }
 
                var l_oDiv = editor.get_document().createElement("DIV");
                l_oDiv.innerHTML = l_sContent;
                argument = l_oDiv;
            }
 
            var callbackInsertDIV = function (sender, args) {
                if (args != null) {
                    var l_sStyle = "", l_sClass, l_sID, l_sContent = "Inhoud DIV...";
 
                    if (args.width && args.width != '') { l_sStyle += 'width:' + args.width + ';' }
                    if (args.height && args.height != '') { l_sStyle += 'height:' + args.height + ';' }
                    if (args.padding && args.padding != '') { l_sStyle += 'padding:' + args.padding + ';' }
                    if (args.margin && args.margin != '') { l_sStyle += 'margin:' + args.margin + ';' }
                    if (l_sStyle.length > 0) { l_sStyle = " style='" + l_sStyle + "'" }
 
                    if (args.class && args.class != '') { l_sClass = " class='" + args.class + "'" }
                    if (args.id && args.id != '') { l_sID = " id='" + args.id + "'" }
                    if (args.content && args.content != '') { l_sContent = args.content }
 
                    var l_sHtml = String.format("<div{0}{1}{2}>" + l_sContent + "</div>", l_sStyle, l_sClass, l_sID);
                    editor.pasteHtml(l_sHtml);
                }
            }
 
            editor.showExternalDialog(
            'RadEditor/dlgInsertDIV.aspx',
            argument,
            600,
            250,
            callbackInsertDIV,
            null,
            'DIV element invoegen/wijzigen',
            true,
            Telerik.Web.UI.WindowBehaviors.Close + Telerik.Web.UI.WindowBehaviors.Move + Telerik.Web.UI.WindowBehaviors.Resize,
            false,
            true);
        };

In editing an existing DIV, how can I replace/update the existing DIV instead of inserting an extra one?

Best regards, Marja
Ianko
Telerik team
 answered on 27 Feb 2014
3 answers
126 views
Hello,
We are using the radeditor as the field editor for some of our fields and we just noticed that when you edit a page, the editor is locked by default. If I click on the HTML mode button and back to WYSIWYG button then the control is editable again. We have recently downgraded from 5.3.2 because the production server is already running 2 other projects with 4.5.4. This issue wasn't occurring in the 5.3.2 version
Thanks
Marin Bratanov
Telerik team
 answered on 27 Feb 2014
1 answer
214 views
Hi

RadEditor - Click on Insert link - then popup is opening. We are trying to change popup header text from "Insert link" to something else. We tried using Javascript something like below on page load
function pageLoad(sender, args) {
                   $(".rwTitlebarControls em").text("new Text....");
    }


On first time click it is not showing required text. It works only on second time onward click. Please suggest solution

More info. - RadEditor is inside User Control which is getting loaded only when user drag it on page. It is on partial postback only. Attached doc has popup screen where highlighted text needs to be change.

Please suggest.

thanks,
Pradip

Ianko
Telerik team
 answered on 27 Feb 2014
8 answers
156 views
Hi,

we want to use the telerik Radeditor in our "SharePoint 2010 Enterprise Wiki" but i have big problems if i insert a webpart into a wiki-page. (I activated the editor as Website-Feature (Use RadEditor to edit List Items / Use RadEditor to edit HTML fields) )
For Example: If i insert a listview webpart and select then another view of this list - the Radeditor insert the default view and the selected view into the page.

Is there a solution for this problem? Does anyone have this problem too?

Greetings from Germany,
Andy
Ianko
Telerik team
 answered on 27 Feb 2014
3 answers
196 views
Some of our users use very low resolution on their monitors, so the button we have at the bottom (in FooterTemplate) of our RadComboBox is not visible unless they scroll down using the browser scrollbar. This works fine in IE <= 10, but in IE 11 the RadComboBox collapses whenever you click the browser scrollbar, so they cannot click the button. And I just confirmed this occurs in Firefox and Chrome as well.

I tried to setting the CloseDropDownOnBlur and EnableScreenBoundaryDetection properties to false, and also setting a very high CollapseDelay value, without effect. I'm brand new to Telerik controls, so any help would be appreciated.

<telerik:RadComboBox ID="selObjectsName" CssClass="nonavigate"
                                CollapseDelay="1000000000" CloseDropDownOnBlur="false" 
                                 
                                ShowToggleImage="false" 
                                HighlightTemplatedItems="true"
                                MinFilterLength="3"
                                OnSelectedIndexChanged="ComboBox_OnSelectedIndexChanged"
                                runat="server"
                                EnableLoadOnDemand="true"
                                AllowCustomText="true"
                                DropDownWidth="650px"
                                MaxHeight="188px"
                                ExpandDirection="Down"
                                ShowDropDownOnTextboxClick="false"
                                Style="width: 500px !important"
                                OnItemsRequested="IncrementalSearchEvent"
                                OnItemDataBound="ComboBox_ItemDataBound"
                                AutoPostBack="true"
                                EnableScreenBoundaryDetection="false"
                                CausesValidation="false" >
                                <HeaderTemplate>
                                    <table border="0" width="100%">
                                        <tr>
                                            <td width="20">
                                                  
                                            </td>
                                            <td width="90">
                                                ID
                                            </td>
                                            <td width="200">
                                                Family Name
                                            </td>
                                            <td width="190">
                                                Current Division
                                            </td>
                                        </tr>
                                    </table>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <table border="0" width="100%">
                                        <tr style="cursor: pointer">
                                            <td width="20">
                                                <img src="<%# DataBinder.Eval(Container.DataItem, "ImageUrl") %>" alt="" />
                                            </td>
                                            <td width="90">
                                                <%# DataBinder.Eval(Container.DataItem, "FamilyId")%>
                                            </td>
                                            <td width="200">
                                                <%# DataBinder.Eval(Container.DataItem, "FamilyName")%>
                                            </td>
                                            <td width="190">
                                                <%# DataBinder.Eval(Container.DataItem, "Division")%>
                                            </td>
                                    </table>
                                </ItemTemplate>
                                <FooterTemplate>
                                    <asp:Button ID="btnAddFamily" runat="server" Text="No Match Found - Add as New Family" CssClass="button-blue" Width="565px" OnClick="btnAddFamily_OnClick" CausesValidation="false" Style="margin-bottom: 5px" />
                                </FooterTemplate>
                            </telerik:RadComboBox>
Hristo Valyavicharski
Telerik team
 answered on 27 Feb 2014
Narrow your results
Selected tags
Tags
+? more
Top users last month
Hiba
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Max
Top achievements
Rank 1
Veteran
Iron
Alina
Top achievements
Rank 1
Rakhee
Top achievements
Rank 1
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Hiba
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Max
Top achievements
Rank 1
Veteran
Iron
Alina
Top achievements
Rank 1
Rakhee
Top achievements
Rank 1
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?