Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
268 views
I have a column on a grid that can contain data from one of two fields depending on some condition.  This condition is evaluated on a row by row basis, so one row can have data from one field, and the next field can have data from another field.

The pseudo logic looks like this:

if (record is user created)
field = date created
else
field = date assigned

How should I set the sort expression on this column?
Dennis
Top achievements
Rank 1
 answered on 18 May 2012
1 answer
144 views
Hi all,

During the OnItemDataBound, I'm using the GridDataItem to retrieve values from the grid. I'm able to do this without the regular columns. The instructions for the Template column said:  For template columns you must find the control in the grid cell and extract its value.please give an example.

Following is the aspx code for the column :
 <telerik: GridTemplateColumn HeaderText="Unloading Type" UniqueName="UnloadTypeColumn">
                        <ItemTemplate>
                                     <%#DataBinder.Eval(Container.Dataitem, "_UnloadTypeName")%>
                        </ItemTemplate>
</telerik:GridTemplateColumn>

Thanks in advance.
Shinu
Top achievements
Rank 2
 answered on 18 May 2012
3 answers
275 views
Hi,

We are trying to resolve a problem from two days now : We are unable to upload files in the RadGrid from a RadUpload.
We found some resolution sample on your forum but none of them could work on our solution because of the UpdatePanel.

Some explanation of the structure of our application :

UpdatePanel containing multiple WebControls => our RadGrid is in one of them.

We couldn't change now the structure of this application : We couldn't remove the UpdatePanel

I took out the code making us crazy, to put it in a project sample with to retrieve the error.

<asp:Content ID="__functionLeft" ContentPlaceHolderID="MainContent" runat="Server">
 
<asp:UpdatePanel ID="__upDatePanel" runat="server">
    <ContentTemplate>
 
        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
        // <![CDATA[
            //On insert and update buttons click temporarily disables ajax to perform upload actions
            function conditionalPostback(sender, eventArgs) {
                var theRegexp = new RegExp("\.UpdateButton$|\.PerformInsertButton$", "ig");
                if (eventArgs.get_eventTarget().match(theRegexp)) {
                    var upload = $find(window['UploadId']);
 
                    //AJAX is disabled only if file is selected for upload
                    if (upload.getFileInputs()[0].value != "") {
                        eventArgs.set_enableAjax(false);
                    }
                }
            }
 
            function validateRadUpload(source, e) {
                e.IsValid = false;
 
                var upload = $find(source.parentNode.getElementsByTagName('div')[0].id);
                var inputs = upload.getFileInputs();
                for (var i = 0; i < inputs.length; i++) {
                    //check for empty string or invalid extension
                    if (inputs[i].value != "" && upload.isExtensionValid(inputs[i].value)) {
                        e.IsValid = true;
                        break;
                    }
                }
            }
             
            // ]]>
        </script>
    </telerik:RadCodeBlock>
     
        <telerik:RadGrid ID="__linksRadGrid" runat="server"
                        AllowMultiRowEdit="false"
                        ShowStatusBar="true"
                        GridLines="None"                                                
                        AllowPaging="False"  
                        AllowAutomaticUpdates="false"
                        AllowAutomaticInserts="false"
                        OnPreRender="LinksGridView_PreRender"
                        OnItemCreated="LinksGridView_ItemCreated"
                        OnNeedDataSource="LinksRadGrid_NeedDataSource"                      
                        OnInsertCommand="LinksRadGrid_InsertCommand"
                        OnUpdateCommand="LinksRadGrid_UpdateCommand"
                        OnDeleteCommand="LinksRadGrid_DeleteCommand"
                        OnItemDataBound="LinksRadGrid_ItemDataBound"
                        OnItemCommand="LinksRadGrid_ItemCommand"
                        OnEditCommand="LinksRadGrid_EditCommand"
                        AllowSorting="true"
                        Skin="Transparent"
                        Width="450px" >
                    <MasterTableView AutoGenerateColumns="False"
                            DataKeyNames="IdAttachment"
                            CommandItemDisplay="Bottom" >
                        <PagerStyle Mode="NextPrevAndNumeric" />
                        <CommandItemTemplate>
                            <div style="padding: 5px 5px;">
                                <asp:ImageButton ID="imgInsert" runat="server"
                                        CommandName="InitInsert"
                                        AlternateText="Insert New Record"                
                                        ToolTip = "Insert New Record" />
                                  
                                <asp:ImageButton ID="imgRefresh" runat="server" 
                                        CommandName="RebindGrid"
                                        AlternateText="Refresh the grid"                
                                        ToolTip = "Refresh the grid" />
                            </div>
                        </CommandItemTemplate>
                        <Columns>
                            <telerik:GridEditCommandColumn ButtonType="ImageButton"
                                    UniqueName="EditAttachmentLinks"
                                    ItemStyle-Width="30px"
                                    ItemStyle-HorizontalAlign="Center"/>
 
                            <telerik:GridBoundColumn DataField="Title"
                                    DataType="System.String"
                                    HeaderText="Title"
                                    SortExpression="Title"
                                    UniqueName="Title">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="Description"
                                    DataType="System.String"
                                    HeaderText="Description"
                                    SortExpression="Description"
                                    UniqueName="Description">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="AttachmentType"
                                    DataType="System.String"
                                    HeaderText="AttachmentType"
                                    SortExpression="AttachmentType"
                                    UniqueName="AttachmentType"
                                    Display="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="Url"
                                    DataType="System.String"
                                    HeaderText="Url"
                                    SortExpression="Url"
                                    UniqueName="URL"
                                    Display="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridTemplateColumn 
                                    HeaderText="Type" 
                                    UniqueName="Type"
                                    HeaderStyle-HorizontalAlign="Center"
                                    ItemStyle-HorizontalAlign="Center" >
                                <ItemTemplate>
                                    <asp:ImageButton ID="__attachedTypeImageButton" runat="server" />
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
 
                            <telerik:GridButtonColumn CommandName="Delete" ButtonType="ImageButton"
                                    UniqueName="DeleteAttachmentLinks"
                                    ConfirmText="Delete this record?"
                                    ConfirmDialogType="RadWindow"
                                    ConfirmTitle="Delete"
                                    ItemStyle-Width="30px"
                                    ItemStyle-HorizontalAlign="Center"/>
 
                        </Columns>
                        <EditFormSettings EditFormType="Template">
                            <EditColumn UniqueName="EditCommandColumn1">
                            </EditColumn>
                            <FormTemplate>
                                <table cellspacing="2" cellpadding="1" width="100%" border="0">
                                    <tr>
                                        <td>
                                            <asp:Label ID="__titleLabel" runat="server"
                                                    Text="Title">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="__titleTextBox" runat="server"
                                                    Width="100px"
                                                    Text='<%# Bind("Title") %>' >
                                            </asp:TextBox>
                                            <span style="color:Red; font-weight:bold">*</span>
                                            <br />
                                            <asp:RequiredFieldValidator ID="__titleTextBoxRFValidator" runat="server"
                                                    ControlToValidate="__titleTextBox"
                                                    Display="Dynamic"
                                                    ErrorMessage="Please, enter a title!" 
                                                    SetFocusOnError="true" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Label ID="__decriptionLabel" runat="server"
                                                    Text="Description">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="__decriptionTextBox" runat="server"
                                                    Width="100px"
                                                    TextMode="MultiLine"
                                                    Rows="4"
                                                    Text='<%# Bind("Description") %>'>
                                            </asp:TextBox>
                                            <span style="color:Red; font-weight:bold">*</span>
                                            <br />
                                            <asp:RequiredFieldValidator ID="__decriptionTextBoxRFValidator" runat="server"
                                                    ControlToValidate="__decriptionTextBox"
                                                    Display="Dynamic"
                                                    ErrorMessage="Please, enter a description!" 
                                                    SetFocusOnError="true" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Label ID="__URLLabel" runat="server"
                                                    Text="URL">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="__urlTextBox" runat="server"
                                                    Width="255px"
                                                    Text='<%# Bind("URL") %>' >
                                            </asp:TextBox>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="2">
                                            <asp:Label ID="__orLabel" runat="server"
                                                    Text="or">
                                            </asp:Label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Label ID="__fileUploadLabel" runat="server"
                                                    Text="File">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <div id="__fileUploadDiv" runat="server">
 
                                                <telerik:RadUpload ID="__fileUpload" runat="server"
                                                        ControlObjectsVisibility="None"
                                                        MaxFileInputsCount="1"                                                    
                                                        />
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                         <td align="right" colspan="2">
                                            <asp:Button ID="btnUpdate" runat="server"
                                                    Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
                                                    CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
                                                    CausesValidation="True" >
                                            </asp:Button
                                              
                                            <asp:Button  ID="btnCancel" runat="server"
                                                    Text="Cancel"
                                                    CausesValidation="False"
                                                    CommandName="Cancel">
                                            </asp:Button >
                                        </td>
                                    </tr>
                                </table>
                            </FormTemplate>
                        </EditFormSettings>
                    </MasterTableView>
                </telerik:RadGrid>
 
        </ContentTemplate>
    </asp:UpdatePanel>
<script type="text/javascript" >
 
    function LinksFileUpload_OnChange(clientidTextBox) {
 
        document.getElementById(clientidTextBox).value = "";
    }
 
    function LinksUrlTextBox_OnChange(clientIdDIVFileUpload) {
 
        //We couldn't change the input file value, so we reset the DIV container
        document.getElementById(clientIdDIVFileUpload).innerHTML = document.getElementById(clientIdDIVFileUpload).innerHTML;
 
    }
 
     
</script>
 
</asp:Content>

The code behind code :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.ComponentModel;
using Telerik.Web.UI;
using System.Text;
using System.Web.UI.HtmlControls;
using System.IO;
 
 
public class ListHelper {
 
    public static DataTable ToDataTable<T>(IList<T> data) {
 
        PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
        DataTable table = new DataTable();
 
        for (int i = 0; i < props.Count; i++) {
            PropertyDescriptor prop = props[i];
            table.Columns.Add(prop.Name, prop.PropertyType);
        }
 
        object[] values = new object[props.Count];
        foreach (T item in data) {
            for (int i = 0; i < values.Length; i++) {
                values[i] = props[i].GetValue(item);
            }
            table.Rows.Add(values);
        }
 
        return table;
    }
 
}
 
public class GWAttachment {
 
    #region Accessor
 
    private string _title;
    public string Title {
        get { return this._title; }
        set { this._title = value; }
    }
 
    private string _description;
    public string Description {
        get { return this._title; }
        set { this._title = value; }
    }
 
    private string _url;
    public string Url {
        get { return this._url; }
        set { this._url = value; }
 
    }
 
    private string _fileName;
    public string FileName {
        get { return this._fileName; }
        set { this._fileName = value; }
    }
 
    private int _idAttachment;
    public int IdAttachment {
        get { return this._idAttachment; }
        set { this._idAttachment = value; }
 
    }
 
    private int _attachmentType;
    public int AttachmentType {
        get { return this._attachmentType; }
        set { this._attachmentType = value; }
 
    }
 
 
    #endregion
 
}
 
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e) {
 
    }
 
 
    #region Links
 
    protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) {
        if (e.Item is GridEditableItem && e.Item.IsInEditMode) {
        }
    }
 
 
    #region DataSource
 
    protected void LinksObjectDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) {
 
    }
 
    #endregion
 
 
    #region Gridview
 
    protected void LinksGridView_PreRender(object sender, EventArgs e) {
 
    }
 
    protected void LinksGridView_ItemCreated(object sender, GridItemEventArgs e) {
 
    }
 
 
    protected void DisableControls(ControlCollection controls) {
        foreach (Control c in controls) {
            if (c is WebControl) {
                ((WebControl)c).Enabled = false;
            }
 
            DisableControls(c.Controls);
        }
    }
 
 
    protected void LinksRadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) {
 
        GWAttachment att1 = new GWAttachment();
        att1.IdAttachment = 1;
        att1.Title = "Test 1";
        att1.Description = "Decription 1";
        att1.Url = "http://www.google.com";
        att1.AttachmentType = 3;
 
        GWAttachment att2 = new GWAttachment();
        att2.IdAttachment = 2;
        att2.Title = "Test 2";
        att2.Description = "Decription 2";
        att2.Url = "http://www.google.com/test";
        att2.AttachmentType = 4;
         
        List<GWAttachment> attachmentList = new List<GWAttachment>();
        attachmentList.Add(att1);
        attachmentList.Add(att2);
 
        DataTable dt = ListHelper.ToDataTable<GWAttachment>(attachmentList);
 
        this.__linksRadGrid.DataSource = dt;
    }
 
    protected void LinksRadGrid_ItemDataBound(object sender, GridItemEventArgs e) {
 
        if (e.Item is GridDataItem) {
 
            GridDataItem gridDataItem = (GridDataItem)e.Item;
 
 
            int attachedType = int.Parse(gridDataItem["AttachmentType"].Text);
            ImageButton image = (ImageButton)gridDataItem["Type"].FindControl("__attachedTypeImageButton");
 
            if (attachedType == 3
                && !string.IsNullOrEmpty(gridDataItem["URL"].Text)) {
 
                int idDocument = this.GetDocumentLinksId(gridDataItem["URL"].Text);
 
                if (idDocument > 0) {
                    image.OnClientClick = this.BuildDocumentPopupScript(idDocument);
                }
                else {
                    this.ShowImageError(image, "Error : unable to parse the internal document id! Please correct the URL.");
                }
            }
            else if (attachedType == 4
                    && !string.IsNullOrEmpty(gridDataItem["URL"].Text)) {
 
                image.OnClientClick = this.WindowsOpenPopup(gridDataItem["URL"].Text);
            }
            else if (attachedType == 5) {
 
                int idAttachment = int.Parse(gridDataItem.GetDataKeyValue("IdAttachment").ToString());
 
                image.OnClientClick = this.GetAttachmentLinksUrl(idAttachment);
            }
            else {
 
            }
        }
        else if (e.Item is GridEditFormItem
                && e.Item.IsInEditMode) {
            GridEditFormItem editItem = e.Item as GridEditFormItem;
 
            TextBox urlTxtBox = (TextBox)editItem.FindControl("__urlTextBox");
            RadUpload linksFileUpload = (RadUpload)editItem.FindControl("__fileUpload");
            Control linksFileUploadDIV = (Control)editItem.FindControl("__fileUploadDiv");
 
 
            if (urlTxtBox != null
                && linksFileUpload != null
                && linksFileUploadDIV != null) {
 
                // It is forbidden to reset a FileUpload, so we reset the dive container!
                string onChangeEventUrlTxtBox = "LinksUrlTextBox_OnChange('" + linksFileUploadDIV.ClientID + "')";
                string onChangeEventLinksFileUpload = "LinksFileUpload_OnChange('" + urlTxtBox.ClientID + "')";
 
                urlTxtBox.Attributes.Add("onchange", onChangeEventUrlTxtBox);
                linksFileUpload.Attributes.Add("onchange", onChangeEventLinksFileUpload);
            }
        }
    }
 
    #region Attachment file
 
    protected String GetAttachmentLinksUrl(int idAttachment) {
 
        String page = "~/Attachment.aspx";
        page = VirtualPathUtility.ToAbsolute(page);
 
        StringBuilder url = new StringBuilder(page);
        url.AppendFormat("?IdAttachment={0}&Type={1}", idAttachment, 3);
 
        string javaScript = "javascript:window.open('{0}','popup{1}','width=650,height=750,scrollbars=yes');return false;";
 
        return String.Format(javaScript, url.ToString(), idAttachment);
    }
 
    #endregion
 
    protected void LinksRadGrid_ItemCommand(object source, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.DownloadAttachmentCommandName) {
            GridEditFormItem editFormItem = (GridEditFormItem)e.Item;
        }
    }
 
    protected void LinksRadGrid_EditCommand(object source, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.EditCommandName
                && e.Item is GridDataItem) {
 
            GridDataItem gridDataItem = (GridDataItem)e.Item;
 
            TextBox urlTxtBox = (TextBox)gridDataItem.FindControl("__urlTextBox");
            RadUpload linksFileUpload = (RadUpload)gridDataItem.FindControl("__fileUpload");
 
            if (urlTxtBox != null
                && linksFileUpload.UploadedFiles != null) {
 
                urlTxtBox.Attributes.Add("onchange", "LinksUrlTextBox_OnChange(" + linksFileUpload.ClientID + ")");
                linksFileUpload.Attributes.Add("onchange", "LinksFileUpload_OnChange(" + urlTxtBox.ClientID + ")");
            }
        }
    }
 
    protected void LinksRadGrid_InsertCommand(object sender, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.PerformInsertCommandName) {
            if (e.Item is GridEditFormItem) {
                GridEditFormItem gridDataItem = (GridEditFormItem)e.Item;
 
                this.SaveAttachment(gridDataItem, false);
 
                this.__linksRadGrid.Rebind();
            }
        }
    }
 
    protected void LinksRadGrid_UpdateCommand(object sender, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.UpdateCommandName) {
            if (e.Item is GridEditFormItem) {
                GridEditFormItem gridDataItem = (GridEditFormItem)e.Item;
 
                this.SaveAttachment(gridDataItem, true);
                 
                this.__linksRadGrid.Rebind();
            }
        }
    }
    protected void LinksRadGrid_DeleteCommand(object sender, GridCommandEventArgs e) {
 
        GridEditableItem editedItem = e.Item as GridEditableItem;
    }
 
    #region Save the Attachment of the document
 
    private void SaveAttachment(GridEditFormItem gridDataItem, bool isAttachmentUpdate) {
 
        int idAttachment = 0;
 
        if (isAttachmentUpdate) {
            idAttachment = Convert.ToInt32(gridDataItem.GetDataKeyValue("IdAttachment"));
        }
 
        TextBox titleTxtBox = (TextBox)gridDataItem.FindControl("__titleTextBox");
        TextBox descriptionTxtBox = (TextBox)gridDataItem.FindControl("__decriptionTextBox");
        TextBox urlTxtBox = (TextBox)gridDataItem.FindControl("__urlTextBox");
        RadUpload linksFileUpload = (RadUpload)gridDataItem.FindControl("__fileUpload");
 
        string title = string.Empty;
        string description = string.Empty;
        string url = string.Empty;
 
        if (titleTxtBox != null) title = titleTxtBox.Text;
        if (descriptionTxtBox != null) description = descriptionTxtBox.Text;
        if (urlTxtBox != null) url = urlTxtBox.Text;
 
        GWAttachment attachment = new GWAttachment();
 
        attachment.Title = title;
        attachment.Description = description;
        attachment.Url = url;
 
        Stream file = null;
 
        if (linksFileUpload != null && linksFileUpload.UploadedFiles != null
            && urlTxtBox != null && string.IsNullOrEmpty(url)) {
 
            attachment.AttachmentType = 5;
 
            if (linksFileUpload.UploadedFiles != null
                && linksFileUpload.UploadedFiles.Count == 1) {
 
                UploadedFile uploadedFile = linksFileUpload.UploadedFiles[0];
                file = uploadedFile.InputStream;
            }
        }
 
        //If a file is also defined, we take only the url when it exist too
        if (urlTxtBox != null && !string.IsNullOrEmpty(url)) {
 
            if (url.Contains(HttpContext.Current.Request.Url.Host)) {
                attachment.AttachmentType = 3;
            }
            else {
                attachment.AttachmentType = 4;
            }
        }
 
    }
 
    #endregion
 
    private string BuildDocumentPopupScript(int documentId) {
 
        string popupScript = string.Empty;
 
        string clientUrl = ResolveClientUrl("~/DetailPopup.aspx");
        clientUrl = string.Format("{0}?idDocument={1}", clientUrl, documentId);
 
        popupScript = string.Format("javascript:window.open('{0}','{1}','width=800,height=750,resizable=yes,scrollbars=yes');return false;", clientUrl, 10);
 
        return popupScript;
    }
 
    private string WindowsOpenPopup(string url) {
 
        string popupScript = string.Empty;
 
        popupScript = string.Format(@"javascript:window.open('{0}','{1}','width=800,height=750,resizable=yes,scrollbars=yes');return false;", url, url);
 
        return popupScript;
    }
 
 
    private int GetDocumentLinksId(string url) {
 
        int idDocumentLinks = -1;
 
        var uri = new Uri(url);
        var query = HttpUtility.ParseQueryString(uri.Query);
 
        return idDocumentLinks;
    }
 
    private ImageButton ShowImageError(ImageButton imageBut, string message) {         
 
        return imageBut;
    }
 
 
    #endregion
 
 
    #endregion
 
}


Does someone have a solution ??

Thank you for your help
Milena
Telerik team
 answered on 18 May 2012
3 answers
525 views
I have a rad grid, which returns a list of data.  I have a subgrid, which should return details in another grid based on the id of the record in the master table and the value of a item selected in a dropdown list.  The subgrid passes 2 parameters to a SQL server stored proc.

If I run the subgrid outside of the hierarchical grid the data is returned no problems.  I followed the example in the demo and have a label that evaluates a datakey.  If I make the label visible the Id displays properly.  However the grid below does not show any data.

Any help would be greatly appreciated.
Andrey
Telerik team
 answered on 18 May 2012
6 answers
250 views
Hello,

I am looking for some code snippet, that will enable the ContextMenu of my TreeView to show.  I tried following, but I think it wants some parameter to be passed along with show(parameter); and I do not know what to pass here.  I have tried passing in the node, but that did not work.

function ShowContextMenu() {
    var tree = $find('tvEstimate');
    var node = tree.get_selectedNode();
    if (node) {
        var menu = node.get_contextMenu();
        menu.show();
    } 
}

The above code gets triggerd by clicking a button,  I have also debugged the above code, and there are valid values in each object - tree, node and menu.  They all have proper values in them, but menu.show() does not show the context menu.  Any suggestion?

Thanks.
Bozhidar
Telerik team
 answered on 18 May 2012
1 answer
72 views
http://demos.telerik.com/aspnet-ajax/treelist/examples/integration/discussionboard/defaultcs.aspx 

Adding single quotes to any of the fields and hitting submit causes the form to blow up.
Tsvetina
Telerik team
 answered on 18 May 2012
1 answer
92 views
I have EnableAsyncUpload="true" set on my RadFileExplorer which uploads files to a third party file hosting provider.  I would like to display the RadFileExplorer's RadAjaxLoadingPanel while the the files are being transferred from the server to the hosting provider.  What is the best way to accomplish this?

The current flow is as follows: 
1) User clicks "Upload"
2) Async upload dialog is shown
3) Files selected and uploaded to server (progress of each file upload is shown in the async upload dialog
4) User clicks the "Upload" button in the async upload dialog
5) The async upload dialog closes
6) Files are transferred from server to the third party file hosting provider (during this process, nothing is happening on the UI screen)
7) UI is updated to show newly uploaded files in the RadFileExplorer's grid

What I am looking for is a way to indicate to the user that something is happening during step 6.  Any help is appreciated.
Dobromir
Telerik team
 answered on 18 May 2012
6 answers
343 views
I've created a project that saves dockstate to a database and dynamically adds docks to the page (based on the myPortal with db example found in these forums).

My project contains one page where a user is displayed a number of default docks and others they have added from a second page.

To reduce the load on the database, instead of saving the dockState to the database every time SaveDockLayout is fired I was planning on retaining the dockState in session and only saving to the database when a dock is actually moved or removed from the database. Part of this I believe can be achieved using the server side event DockPositionChanged. The problem is I cannot get this event to fire.

When creating the dock i've tried the following:
dock.Attributes.Add("OnDockPositionChanged""RadDock_DockPositionChanged"
dock.OnClientDockPositionChanged = "RadDock_DockPositionChanged" 


The second obviously doesn't work as it is looking for client code.

Code for the event handler (that doesn't get fired)
Protected Sub RadDock_DockPositionChanged(ByVal sender As ObjectByVal e As Telerik.Web.UI.DockPositionChangedEventArgs) 
    Dim dock As RadDock 
    dock = DirectCast(sender, RadDock) 
 
    If dock.DockZoneID <> e.DockZoneID Then 
... 

How do you wire up the dynamically created dock to fire the server event?

Thanks.

Slav
Telerik team
 answered on 18 May 2012
7 answers
292 views

Hi,

I try to generate an OrgChart dynamically, for do that, I need to add actions to the orgChart item (by RadButton).

In my first POC, I try the programm below.

<%@ Control language="C#" Inherits="DotNetNuke.Modules.Quanteam.ContractModule.View" AutoEventWireup="false"  Codebehind="View.ascx.cs" %>
<%@ Register assembly="System.Web.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" namespace="System.Web.UI.WebControls" tagprefix="asp" %>
<%@ Register TagPrefix="telerik" Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" %>
 
<asp:MultiView ID="multiView" runat="server">
    <asp:View ID="ViewContractDetail" runat="server">
        <telerik:RadOrgChart runat="server" ID="radOrgChart">
            <Nodes>
                <telerik:OrgChartNode>
                    <ItemTemplate>
                        <div style="background-color: Red; height: 80px; width: 180px;">
                            <telerik:RadButton ID="TestBtnOrgChart" Text="click : 0" runat="server"
                                OnClick="onClick_Handler"
                                ValidationGroup="ParamValidationGroup"
                                ButtonType="LinkButton" BorderStyle="None">
                                <Icon PrimaryIconUrl="~/images/Add.gif" PrimaryIconLeft="5px" />
                            </telerik:RadButton>
                        </div>
                    </ItemTemplate>
                    <GroupItems>
                        <telerik:OrgChartGroupItem Text="Click for Test" />
                    </GroupItems>
                </telerik:OrgChartNode>
        </telerik:RadOrgChart>
    </asp:View>
</asp:MultiView>

 

private void Page_Load(object sender, System.EventArgs e)
        {
            try
            {
                System.Web.UI.WebControls.View view = FindControl("ViewContractDetail") as System.Web.UI.WebControls.View;
                multiView.SetActiveView(view);
 
                //----------------------------------------------------
                // RadOrgChart
                //----------------------------------------------------
 
                var nodeContract = new OrgChartNode();
                radOrgChart.Nodes.Add(nodeContract);
 
                OrgChartGroupItem topContract = new OrgChartGroupItem() { Template = new MyTemplate("btnOrgChart1") };
                nodeContract.GroupItems.Add(topContract);
 
                var node = new OrgChartNode();
                topContract.Node.Nodes.Add(node);
 
                OrgChartGroupItem missionNode = new OrgChartGroupItem() { Template = new MyTemplate("btnOrgChart2", onClick_Handler) };
                node.GroupItems.Add(missionNode);
 
                //----------------------------------------------------
                // RadButton
                //----------------------------------------------------
 
                RadButton radBtn = new RadButton();
                radBtn.ID = "btn_1";
                radBtn.Text = string.Format("click : {0}", 0);
                radBtn.Click += onClick_Handler;
                view.Controls.Add(radBtn);
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
 
        class MyTemplate : ITemplate
        {
            private string _id;
            private System.EventHandler _onClick;
 
            public MyTemplate(string id)
            {
                _id = id;
                _onClick = onClick_Handler;
            }
 
            public MyTemplate(string id, System.EventHandler onClick)
            {
                _id = id;
                _onClick = onClick;
            }
 
            public void InstantiateIn(Control container)
            {
                RadButton radBtn = new RadButton();
                radBtn.ID = _id;
                radBtn.Text = string.Format("click {1} : {0}", 0, _id);
                radBtn.Click += _onClick;
                container.Controls.Add(radBtn);
            }
 
            protected void onClick_Handler(object sender, System.EventArgs e)
            {
                RadButton radBtn = sender as RadButton;
                radBtn.Text = string.Format("click {1} : {0}", Convert.ToInt32(radBtn.Text.Split(':')[1]) + 1, _id);
            }
        }
 
        protected void onClick_Handler(object sender, System.EventArgs e)
        {
            RadButton radBtn = sender as RadButton;
            string[] items = radBtn.Text.Split(':');
 
            radBtn.Text = string.Format("{0} : {1}", items[0], Convert.ToInt32(items[1].Trim()) + 1);
        }

 

When I try this program, the button created into the OrgChart by API call the Page_Load handler, but not the associated click handler.
Even if the handler came from the view or from the custom ITemplate class.

The two buttons of control :
- generated with the ASX and inside of the OrgChart
- generated with the API and outside of OrgChart
works normally.

Why my two Button generated with API into the OrgChar seems to don't call the Click event.

For information, I begin on ASP.Net since few week.

Thanks for your help.

 

Peter Filipov
Telerik team
 answered on 18 May 2012
3 answers
117 views
Is it possible to make Tab strip functionality works like Rad Menu which means when I hover on Tab strip I would like to show the Tab items in a drop down how can I achieve this. Also when I select an Item from drop down I would like to set the selected Item in selected state
Kate
Telerik team
 answered on 18 May 2012
Narrow your results
Selected tags
Tags
+? more
Top users last month
Boardy
Top achievements
Rank 2
Veteran
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
ivory
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
ClausDC
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Boardy
Top achievements
Rank 2
Veteran
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
ivory
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
ClausDC
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?