Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
203 views
Hi,

I have a RadUpload control inside an edititemtemplate.  I was able to get it work by looking at some examples I've found around here, but the only thing I can't seem to be able to do is validate the field.   If a user doesn't select a file to upload I want it to display a message but it doesn't display anything for some reason.  I posted a strip-down version of my project below, please advice as to what I'm doing wrong, thank you!

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="RadGridUpload.aspx.vb" Inherits="MyTestProject.RadGridUpload" %> 
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server">  
    <title></title>  
      
     <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">  
         
         
        <script type="text/javascript">  
            //<![CDATA[
       
            function conditionalPostback(e, sender) {
               
                var theRegexp = new RegExp("\.UpdateButton$|\.PerformInsertButton$", "ig");
                if (sender.get_eventTarget().match(theRegexp)) {
                  
                    var upload = $find(window['UploadId']);
                    //AJAX is disabled only if file is selected for upload
                    if (upload.getFileInputs()[0].value != "") {
                        sender.set_enableAjax(false);
                    }
                }
            }
            function validateRadUpload(source, e) {
                alert("true");
                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:RadScriptBlock> 
</head> 
<body> 
    <form id="form1" runat="server">  
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">  
    </telerik:RadScriptManager> 
    <div> 
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">  
            <AjaxSettings> 
                <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">  
                    <UpdatedControls> 
                        <telerik:AjaxUpdatedControl ControlID="MyRadGrid" /> 
                    </UpdatedControls> 
                </telerik:AjaxSetting> 
            </AjaxSettings> 
        </telerik:RadAjaxManager> 
          
          
        Click Edit to Upload a File:  
        <br /> 
          
          
        <telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel1" ClientEvents-OnRequestStart="conditionalPostback">  
          
         
        <telerik:RadGrid runat="server" ID="MyRadGrid" AutoGenerateColumns="false" > 
            <MasterTableView> 
                <Columns> 
                    <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> 
                    <telerik:GridTemplateColumn HeaderText="Upload" UniqueName="Upload">  
                        <ItemTemplate> 
                                <%#Eval("Col1")%> 
                        </ItemTemplate> 
                        <EditItemTemplate> 
                                <telerik:RadUpload runat="server" ID="RadUpload" ControlObjectsVisibility="None" /> 
                        </EditItemTemplate> 
                          
                    </telerik:GridTemplateColumn> 
                      
                </Columns> 
              
            </MasterTableView> 
          
        </telerik:RadGrid> 
         </telerik:RadAjaxPanel> 
    </div> 
    </form> 
</body> 
</html> 
 

Imports Telerik.Web.UI  
Partial Public Class RadGridUpload  
    Inherits System.Web.UI.Page  
 
    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load  
 
    End Sub 
 
    Private Sub MyRadGrid_NeedDataSource(ByVal source As ObjectByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles MyRadGrid.NeedDataSource  
        MyRadGrid.DataSource = GridDataSource()  
    End Sub 
 
 
    Private Function GridDataSource() As DataTable  
        Dim dtMyTable As New DataTable  
        dtMyTable.Columns.Add("Col1")  
        Dim dtRow As DataRow = dtMyTable.NewRow  
        dtRow("Col1") = "2" 
        dtMyTable.Rows.Add(dtRow)  
 
        Return dtMyTable  
 
    End Function 
 
    Private Sub MyRadGrid_ItemCreated(ByVal sender As ObjectByVal e As Telerik.Web.UI.GridItemEventArgs) Handles MyRadGrid.ItemCreated  
        If TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode Then 
            Dim editItem As GridEditableItem = DirectCast(e.Item, GridEditableItem)  
            Dim upload As RadUpload = TryCast(e.Item.FindControl("RadUpload"), RadUpload)  
            Dim validator As CustomValidator = New CustomValidator()  
            validator.ErrorMessage = "Please select file to be uploaded" 
            validator.ClientValidationFunction = "validateRadUpload" 
            validator.Display = ValidatorDisplay.Dynamic 
 
            DirectCast(upload.Parent, TableCell).Controls.Add(validator)  
 
        End If 
    End Sub 
 
    Private Sub MyRadGrid_ItemDataBound(ByVal sender As ObjectByVal e As Telerik.Web.UI.GridItemEventArgs) Handles MyRadGrid.ItemDataBound  
        If TypeOf (e.Item) Is GridEditableItem AndAlso e.Item.IsInEditMode Then 
            Dim upload As RadUpload = TryCast(e.Item.FindControl("RadUpload"), RadUpload)  
            RadAjaxPanel1.ResponseScripts.Add(String.Format("window['UploadId'] = '{0}';", upload.ClientID))  
        End If 
    End Sub 
 
End Class 
Pavlina
Telerik team
 answered on 01 Dec 2009
1 answer
78 views
Hello,
I have a problem filtering a GridDateTimeColumn. I use an ObjectDataSource to fill my grid with data. Moreover I have filtering sorting and paging activated. One of the columns is a GridDateTImeColumn defined like this:
<telerik:GridDateTimeColumn DataField="Date" HeaderText="Datum" 
                    SortExpression="Date" UniqueName="Date"
</telerik:GridDateTimeColumn> 

Showing the data, sorting and paging works fine. I can see the dates and the appropriate times in the column.

But if I try to filter the column for a date (which definitly exists in the column) with the EqualTo filter it returns no rows as result. Is it possible that the filter tries to get all occurences of the specified date at 00:00:00?

Could you please help me clarifiing this issue?

Best regards
Ferdinand
Pavlina
Telerik team
 answered on 01 Dec 2009
8 answers
271 views
Hello,

I am using the strategy put forth in Persisting the selected rows client-side on sorting/paging/filtering/grouping. This works well for tracking selected items across paging. After the user is done selecting all their items they select an action, such as delete. When they do this the
grid.SelectedItems 
collection only contains the items on the current page. How can I get at the full list of selected items from all pages. Shouldn't the
grid.SelectedItems 
collection be returning the whole list from the javascript variable
var selected = {}; 
Barnabas
Top achievements
Rank 1
 answered on 01 Dec 2009
3 answers
223 views
Hi,

I have around 450 menu items with a three level heirarchy and its taking lot of time to show the submenus. Can this be much faster??
How can it be done?

Thank you,
Kavya.
Vesko
Top achievements
Rank 2
 answered on 01 Dec 2009
7 answers
215 views
Hi,

I am doing a POC for RAD Controls using trail version and once POC is successful controls will be used for a huge assignment. but I am getting JavaScript Error for Schedular control saying - Expected ':'. I tried my best to solve it but could not get rid of it. Please assist me in same. Thanks in advance.

Below is scenario and code snippets of my code,

Scenario:
I am having base Default Page using Master page, not a single control is used directly all are kept in user control and are embeded in Dafault Page, The controls on Default Page are getting populated dynamically using RAD Dock control. I am using Rad Grid, Rad File Uploader and Rad Schedular.

Error:
Other controls are working fine but when I select and add Schedular to Default Page as Dock it gives me JavaScript Error - Expected ':'. Code for Schedular is very simple and same for the Dock too. But I am not getting why exactly error is poping up.

Code:
POCSchedular.ascx
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="POCSchedular.ascx.vb" 
    Inherits="POCSchedular" %> 
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> 
<div> 
    <telerik:RadAjaxManagerProxy ID="RadAjaxManagerSch" runat="server">  
        <AjaxSettings> 
            <telerik:AjaxSetting AjaxControlID="RadScheduler1">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadScheduler1"/>  
                </UpdatedControls> 
            </telerik:AjaxSetting> 
        </AjaxSettings> 
    </telerik:RadAjaxManagerProxy> 
    <table cellpadding="0" cellspacing="0" border="0">  
        <tr> 
            <td> 
                <telerik:RadScheduler runat="server" ID="RadScheduler1" ShowAllDayRow="false" Skin="Office2007" 
                    SelectedView="WeekView" DataKeyField="ID" DataStartField="Start" DataEndField="End" 
                    DataSubjectField="Note">  
                    <WeekView HeaderDateFormat="dd.MM" /> 
                    <TimelineView UserSelectable="false" /> 
                </telerik:RadScheduler> 
            </td> 
        </tr> 
    </table> 
</div> 
 

POCSchedular.ascx.vb

 

 

Imports System.Data  
Imports Telerik.Web.UI  
Imports Telerik.Web.UI.Upload  
 
    Partial Class POCSchedular  
        Inherits System.Web.UI.UserControl
#Region "Events"  
 
#Region "Page_Load" 
 
        ''' <summary>  
        '''   
        ''' </summary>  
        ''' <param name="sender"></param>  
        ''' <param name="e"></param>  
        ''' <remarks></remarks>  
        Private Sub Page_Load(ByVal sender As ObjectByVal e As EventArgs) Handles Me.Load  
 
            RadScheduler1.DayStartTime = New TimeSpan(8, 0, 0)  
            RadScheduler1.DayEndTime = New TimeSpan(18, 0, 0)  
 
            RadScheduler1.DataSource = GetSchedularData().Tables(0)  
 
        End Sub
#End Region  
 
#Region "RadScheduler1_AppointmentUpdate" 
 
        ''' <summary>  
        '''   
        ''' </summary>  
        ''' <param name="sender"></param>  
        ''' <param name="e"></param>  
        ''' <remarks></remarks>  
        Protected Sub RadScheduler1_AppointmentUpdate(ByVal sender As ObjectByVal e As Telerik.Web.UI.AppointmentUpdateEventArgs) Handles RadScheduler1.AppointmentUpdate  
 
            Dim dsSchedule As DataSet = GetSchedularData()  
 
            If Not dsSchedule Is Nothing Then 
 
                For Each drSchedule As DataRow In dsSchedule.Tables(0).Rows  
 
                    If drSchedule("ID").ToString().Trim() = e.Appointment.ID Then 
 
                        drSchedule("Start") = e.ModifiedAppointment.Start  
                        drSchedule("End") = e.ModifiedAppointment.End 
                        drSchedule("Note") = e.ModifiedAppointment.Subject  
 
                        Exit For 
                    End If 
 
                    dsSchedule.Tables(0).AcceptChanges()  
                    dsSchedule.AcceptChanges()  
 
                Next 
 
            End If 
 
        End Sub
#End Region  
 
#Region "RadScheduler1_AppointmentInsert" 
 
        ''' <summary>  
        '''   
        ''' </summary>  
        ''' <param name="sender"></param>  
        ''' <param name="e"></param>  
        ''' <remarks></remarks>  
        Protected Sub RadScheduler1_AppointmentInsert(ByVal sender As ObjectByVal e As Telerik.Web.UI.SchedulerCancelEventArgs) Handles RadScheduler1.AppointmentInsert  
 
            Dim dsSchedule As DataSet = GetSchedularData()  
 
            If Not dsSchedule Is Nothing Then 
 
                Dim drSchedule As DataRow = dsSchedule.Tables(0).NewRow()  
                drSchedule("ID") = New Random().Next(1000)  
                drSchedule("Start") = e.Appointment.Start  
                drSchedule("End") = e.Appointment.End 
                drSchedule("Note") = e.Appointment.Subject  
 
                dsSchedule.Tables(0).Rows.Add(drSchedule)  
 
                dsSchedule.Tables(0).AcceptChanges()  
                dsSchedule.AcceptChanges()  
 
            End If 
 
        End Sub
#End Region  
 
#Region "RadScheduler1_AppointmentDelete" 
 
        ''' <summary>  
        '''   
        ''' </summary>  
        ''' <param name="sender"></param>  
        ''' <param name="e"></param>  
        ''' <remarks></remarks>  
        Protected Sub RadScheduler1_AppointmentDelete(ByVal sender As ObjectByVal e As Telerik.Web.UI.SchedulerCancelEventArgs) Handles RadScheduler1.AppointmentDelete  
 
            Dim dsSchedule As DataSet = GetSchedularData()  
 
            If Not dsSchedule Is Nothing Then 
 
                Dim filter As String = "ID =" & e.Appointment.ID.ToString()  
                Dim drSchedule() As DataRow = dsSchedule.Tables(0).Select(filter)  
 
                For Each drDel As DataRow In drSchedule  
 
                    dsSchedule.Tables(0).Rows.Remove(drDel)  
 
                Next 
 
                dsSchedule.Tables(0).AcceptChanges()  
                dsSchedule.AcceptChanges()  
 
            End If 
 
        End Sub
#End Region  
 
#End Region
#Region "Private Functions"  
 
#Region "GetSchedularData" 
 
        ''' <summary>  
        '''   
        ''' </summary>  
        ''' <returns></returns>  
        ''' <remarks></remarks>  
        Private Function GetSchedularData() As DataSet  
 
            Dim dsSchedule As New DataSet()  
 
            If Session("SCHEDULE"Is Nothing Then 
 
                Dim dtSchedule As New DataTable("Schedule")  
                Dim drSchedule As DataRow  
                Dim colSchedule As DataColumn  
 
                colSchedule = New DataColumn("ID")  
                dtSchedule.Columns.Add(colSchedule)  
                colSchedule = New DataColumn("Start")  
                dtSchedule.Columns.Add(colSchedule)  
                colSchedule = New DataColumn("End")  
                dtSchedule.Columns.Add(colSchedule)  
                colSchedule = New DataColumn("Note")  
                dtSchedule.Columns.Add(colSchedule)  
 
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {1, New Date(2008, 12, 1, 9, 15, 0), New Date(2008, 12, 1, 10, 15, 0), "EMS Demo."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {2, New Date(2008, 12, 1, 13, 0, 0), New Date(2008, 12, 1, 14, 30, 0), "Req. Collection."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {3, New Date(2008, 12, 2, 11, 0, 0), New Date(2008, 12, 2, 13, 0, 0), "Client Lunch."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {4, New Date(2008, 12, 3, 9, 0, 0), New Date(2008, 12, 3, 10, 0, 0), "Team Review."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {5, New Date(2008, 12, 3, 16, 0, 0), New Date(2008, 12, 3, 16, 30, 0), "Project plan disc."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {6, New Date(2008, 12, 5, 8, 30, 0), New Date(2008, 12, 5, 10, 30, 0), "Offshore status review."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {7, New Date(2008, 12, 8, 10, 0, 0), New Date(2008, 12, 8, 12, 0, 0), "Update Timesheet."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {8, New Date(2008, 12, 8, 10, 0, 0), New Date(2008, 12, 8, 12, 0, 0), "Create week plan."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {9, New Date(2008, 12, 8, 13, 0, 0), New Date(2008, 12, 8, 15, 0, 0), "Training."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {10, New Date(2008, 12, 9, 14, 0, 0), New Date(2008, 12, 9, 15, 0, 0), "Dev. status meet."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {11, New Date(2008, 12, 10, 8, 30, 0), New Date(2008, 12, 10, 10, 0, 0), "Client meeting."}  
                dtSchedule.Rows.Add(drSchedule)  
                drSchedule = dtSchedule.NewRow()  
                drSchedule.ItemArray = New Object() {12, New Date(2008, 12, 11, 16, 0, 0), New Date(2008, 12, 11, 17, 0, 0), "Team updates."}  
                dtSchedule.Rows.Add(drSchedule)  
 
                dsSchedule.Tables.Add(dtSchedule)  
 
                Session("SCHEDULE") = dsSchedule  
            Else 
 
                dsSchedule = CType(Session("SCHEDULE"), DataSet)  
 
            End If 
 
            Return dsSchedule  
 
        End Function
#End Region  
 
#End Region  
 
 
    End Class 
 

 


Thanks,
Avi

 

 

 

 

 

 

T. Tsonev
Telerik team
 answered on 01 Dec 2009
3 answers
146 views
Hi,

I am trying to bind the database table's column with the checkbox in front of each Items fetched into ListView from the DB Table.

upto this I'm able to do as I want to. But the problem arises when i need to fetch the selected value of Item (with checkbox checked for that perticulat item).

The value of the checked Item would be fetch on Button_Click event.

Apparently, I am not able to get the selected value into any of the label or text box.( as checkbox implementation has been provided in demos for ListView, Probably because items have been hard coded in the demo and the Items which I am trying to populate will be dynamic at the period of time.)

Any suggestions?

Cheers!
Rosen
Telerik team
 answered on 01 Dec 2009
4 answers
58 views
Hi All,

I have one application where i use many rad controls. Now i want to use the editor control too, but as i see in that version the editor control has issues. I can't export to PDF, or I can't change the toolbox pictures. In the new version I see so that this issue don't exists anymore. I tried to download the latest version from rad controls and use that dll, but then the other controls are working not. So the best solution would be if I could use for the rad editor the new dll, and for the other controls the old dll. This is possible? Is some opportunity to can get the editor in a separate dll? Can you help me how can I resolve this, or some workaround?

Thanks for you help
Elod Laszlo
Top achievements
Rank 1
 answered on 01 Dec 2009
2 answers
151 views
I tried to install RadControls Q3 2009 but get the following error when I run this code:
using System;  
using System.Runtime.InteropServices;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Xml.Serialization;  
using Microsoft.SharePoint;  
using Microsoft.SharePoint.WebControls;  
using Microsoft.SharePoint.WebPartPages;  
using Telerik.Web.UI;  
 
namespace WebPart1  
{  
    [Guid("d7ac1371-a8aa-447e-a721-0ab32fc667e8")]  
    public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart  
    {  
        public WebPart1()  
        {  
        }  
 
        protected override void CreateChildControls()  
        {  
            base.CreateChildControls();  
 
            // TODO: add custom rendering code here.  
            RadGrid rg1 = new RadGrid();  
 
            SPWeb web = SPContext.Current.Web;  
 
            SPList list = web.Lists[0];  
 
            rg1.DataSource = list.Items;  
            rg1.DataBind();  
 
            this.Controls.Add(rg1);  
        }  
    }  

Here is the error I get:
The type 'System.Web.UI.IScriptControl' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutralPublicKeyToken=31bf3856ad364e35'.   

The error seems to be that I dont have version 3.5.0.0 of the System.Web.Extensions dll.  Ok fair enough, but I thought to get
this version you'd have to download Ajax Extension from asp.net and it would create a folder in the path C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions with a new 2.0 folder?  All I seem to have is a folder v1.0.61025, in this folder is a System.Web.Extensions.dll version 1.0.61231.0.  Where do you get this 3.5.0.0 version?

Jason
Svetlina Anati
Telerik team
 answered on 01 Dec 2009
16 answers
393 views
I am trying to build this exact same example using a custom server control. Everything seems to be working fairly well other than being able to get the value back after submit from the combo box.

Here is the code for the server control...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using LO.Persistence; 
using LO.Persistence.Services; 
using Telerik.Web.UI; 
using LO.Extensions; 
using LO.Web.ComponentModel; 
 
namespace LO.Web.UI.Controls 
    [BindingProperty("SelectedValue")] 
    public class OComboSelector : CompositeControl, IOControl 
    { 
        #region Properties 
         
        private RadComboBox _comboBox; 
        private RadTreeView _treeView; 
        private OLabel _label; 
        private bool _isPropertyChanged; 
        private bool _isSelectedValueChanged; 
 
        public T GetSelectedValue<T>() where T : IEntity, new() 
        { 
            if (_comboBox == null
            { 
                return ConvertExtension.ConvertTo<T>(string.Empty); 
            } 
            return ConvertExtension.ConvertTo<T>(_comboBox.SelectedValue); 
        } 
        public string SelectedText 
        { 
            get { return ViewState.GetValue("SelectedText", String.Empty); } 
            set 
            { 
                EnsureChildControls(); 
                RadTreeNode node = GetNodeByText(_treeView.Nodes, value); 
                if (node != null
                { 
                    node.Selected = true
                    _comboBox.Items[0].Text = value; 
                    _comboBox.Items[0].Selected = true
                    _comboBox.Text = value; 
                    _comboBox.SelectedValue = node.Value; 
                    ViewState["SelectedValue"] = node.Value; 
                    ViewState["SelectedText"] = value; 
                    OnSelectedValueChanged(new RadTreeNodeEventArgs(node)); 
                } 
            } 
        } 
        public string SelectedValue 
        { 
            get { return ViewState.GetValue("SelectedValue", String.Empty); } 
            set 
            { 
                EnsureChildControls(); 
                RadTreeNode node = GetNodeByValue(_treeView.Nodes, value); 
                if (node != null
                { 
                    node.Selected = true
                    _comboBox.Items[0].Text = node.Text; 
                    _comboBox.Items[0].Selected = true
                    _comboBox.Text = node.Text; 
                    _comboBox.SelectedValue = node.Value; 
                    ViewState["SelectedValue"] = value; 
                    ViewState["SelectedText"] = node.Text; 
                    OnSelectedValueChanged(new RadTreeNodeEventArgs(node)); 
                } 
            } 
        } 
        public override void DataBind() 
        { 
            _treeView.DataBind(); 
            base.DataBind(); 
        } 
        public String EmptyMessage 
        { 
            get { EnsureChildControls(); return _comboBox.EmptyMessage; } 
            set { EnsureChildControls(); _comboBox.EmptyMessage = value; } 
        } 
        public String DataFieldID 
        { 
            get { EnsureChildControls(); return _treeView.DataFieldID; } 
            set { EnsureChildControls(); _treeView.DataFieldID = value; } 
        } 
        public String DataTextField 
        { 
            get { EnsureChildControls(); return _treeView.DataTextField; } 
            set { EnsureChildControls(); _treeView.DataTextField = value; } 
        } 
        public String DataValueField 
        { 
            get { EnsureChildControls(); return _treeView.DataValueField; } 
            set { EnsureChildControls(); _treeView.DataValueField = value; } 
        } 
        public String DataFieldParentID 
        { 
            get { EnsureChildControls(); return _treeView.DataFieldParentID; } 
            set { EnsureChildControls(); _treeView.DataFieldParentID = value; } 
        } 
        public bool AutoPostBack 
        { 
            get { EnsureChildControls(); return _comboBox.AutoPostBack; } 
            set {  
                EnsureChildControls();  
                _comboBox.AutoPostBack = value; 
                if (value == true
                { 
                    _treeView.NodeClick += _treeView_NodeClick; 
                } 
            } 
        } 
        public object DataSource 
        { 
            get { EnsureChildControls(); return _treeView.DataSource; } 
            set { EnsureChildControls(); _treeView.DataSource = value; } 
        } 
        public bool Required 
        { 
            get { return ViewState.GetValue("Required"false); } 
            set { ViewState["Required"] = value; } 
        } 
        public bool ReadOnly 
        { 
            get { return ViewState.GetValue("ReadOnly"false); } 
            set { ViewState["ReadOnly"] = value; } 
        } 
        public string LabelID 
        { 
            get { return ViewState.GetValue("LabelID"string.Empty); } 
            set { ViewState["LabelID"] = value; } 
        } 
        public OLabel Label 
        { 
            get 
            { 
                if (_label == null
                { 
                    _label = ControlUtil.FindLabel(this); 
                } 
                return _label; 
            } 
        } 
        public string Property 
        { 
            get { return ViewState.GetValue("Property"string.Empty); } 
            set { ViewState["Property"] = value; } 
        } 
 
        public bool IsPropertyChanged 
        { 
            get { return _isPropertyChanged; } 
        } 
        public bool IsSelectedValueChanged 
        { 
            get { return _isSelectedValueChanged; } 
        } 
        public IEntity BindingSource 
        { 
            get
            set
        } 
        public string SecurityKey 
        { 
            get { return ViewState.GetValue("SecurityKey"string.Empty); } 
            set { ViewState["SecurityKey"] = value; } 
        } 
        #endregion 
        #region Events 
 
        public event EventHandler<RadTreeNodeEventArgs> SelectedValueChanged; 
        public void OnSelectedValueChanged(RadTreeNodeEventArgs e) 
        { 
            EventHandler<RadTreeNodeEventArgs> handler = SelectedValueChanged; 
            if (handler != null) handler(this, e); 
 
            _isSelectedValueChanged = true
        } 
        public event EventHandler<PropertyChangedEventArgs> PropertyChanged;      
        private void OnPropertyChanged(PropertyChangedEventArgs e) 
        { 
            EventHandler<PropertyChangedEventArgs> handler = PropertyChanged; 
            if (handler != null) handler(this, e); 
 
            _isPropertyChanged = true
        } 
        #endregion 
        #region Methods 
         
        private RadTreeNode GetNodeByValue(RadTreeNodeCollection nodes, string value) 
        { 
            EnsureChildControls(); 
            RadTreeNode returnNode = null
            foreach (RadTreeNode node in nodes) 
            { 
                if (node.Value == value) 
                { 
                    returnNode = node; 
                    break
                } 
                if (node.Nodes.Count > 0) 
                { 
                    node.Expanded = true
                    returnNode = GetNodeByValue(node.Nodes, value); 
                } 
            } 
            return returnNode; 
        } 
        private RadTreeNode GetNodeByText(RadTreeNodeCollection nodes, string value) 
        { 
            EnsureChildControls(); 
            RadTreeNode returnNode = null
            foreach (RadTreeNode node in nodes) 
            { 
                if (node.Text == value) 
                { 
                    returnNode = node; 
                    break
                } 
                if (node.Nodes.Count > 0) 
                { 
                    node.Expanded = true
                    returnNode = GetNodeByText(node.Nodes, value); 
                } 
            } 
            return returnNode; 
        } 
        protected override void CreateChildControls() 
        { 
            _comboBox = new RadComboBox { ID = "InternalComboBox", Width = Width }; 
            _treeView = new RadTreeView { ID = "TreeView" }; 
             
            RadComboBoxItem container = new RadComboBoxItem(); 
            HtmlGenericControl panel = new HtmlGenericControl("div"); 
 
            Controls.Add(_comboBox); 
            _comboBox.Items.Add(container); 
            container.Controls.Add(panel); 
            panel.Controls.Add(_treeView); 
             
            
            panel.ID = "itemTemplate"
            _comboBox.OnClientDropDownOpened = "_onClientDropDownOpenedHandler"
            _treeView.OnClientNodeClicking = "_nodeClicking"
 
            base.CreateChildControls(); 
        } 
        protected override void Render(HtmlTextWriter writer) 
        { 
 
            base.Render(writer); 
        } 
        private void _treeView_NodeClick(object sender, RadTreeNodeEventArgs e) 
        { 
            SelectedValue = ((RadTreeView)sender).SelectedNode.Value; 
            OnSelectedValueChanged(e); 
        } 
        public void Bind() 
        { 
            DataBindingUtil.Bind(this"SelectedValue"); 
        } 
        public void Unbind() 
        { 
            DataBindingUtil.Unbind(this"SelectedValue"); 
        } 
        protected override void OnInit(EventArgs e) 
        { 
            base.OnInit(e); 
        }       
        #endregion   
    } 

Here is how I'm putting it on a page...

<lo:OComboSelector runat="server" ID="testing" /> 

This is the javascript on the page... (and I know for sure that all the control ID's are correct and getting the control it should)

<script type="text/javascript"
 
    function _nodeClicking(sender, args) { 
        var comboBox = $find("ctl00_ctl00_PageContentPlaceHolder_LeftContentPlaceHolder_eventForm_testing_InternalComboBox"); 
        var node = args.get_node(); 
        comboBox.set_text(node.get_text()); 
        comboBox.trackChanges(); 
        comboBox.get_items().getItem(0).set_value(node.get_value()); 
        comboBox.commitChanges(); 
        comboBox.hideDropDown(); 
    } 
 
    function _stopPropagation(e) { 
        if (!e) { 
            e = window.event; 
        } 
        e.cancelBubble = true
    } 
 
    function _onClientDropDownOpenedHandler(sender, eventArgs) { 
        var tree = sender.get_items().getItem(0).findControl("ctl00_ctl00_PageContentPlaceHolder_LeftContentPlaceHolder_eventForm_testing_InternalComboBox_i0_TreeView"); 
        var selectedNode = tree.get_selectedNode(); 
        if (selectedNode) { 
            selectedNode.scrollIntoView(); 
        } 
    } 
    var templatedd = document.getElementById("ctl00_ctl00_PageContentPlaceHolder_LeftContentPlaceHolder_eventForm_testing_InternalComboBox_i0_itemTemplate"); 
    templatedd.onclick = _stopPropagation; 
</script> 


This is my aspx page's code behind....

        protected void Page_Load(object sender, EventArgs e)  
        { 
            if (!IsPostBack) 
            { 
                testing.DataSource = toolTypes; 
                testing.DataTextField = "Name"
                testing.DataValueField = "ToolTypeID"
                testing.DataBind(); 
                testing.SelectedValue = "29"
            } 
            testing.EmptyMessage = "Please select something"
            Response.Write(testing.SelectedText); 
        } 
 

On first page load, I do get the selected text to response write correctly, but when I select something different from the treeview and click the submit button, I don't get the different value, I just get the same one. I'm thinking this has something to do with the javascript block below. If I put "_treeView.NodeClick += _treeView_NodeClick;" in the CreateChildControls() function, it works, but it causes postback every time the node is selected, and it's one postback behind with the correct value...Any ideas?
comboBox.trackChanges();
comboBox.get_items().getItem(0).set_value(node.get_value());
comboBox.commitChanges();
Simon
Telerik team
 answered on 01 Dec 2009
3 answers
144 views

Hi

I am having a RADMenu in which i am having many items.
RadMenu.DefaultGroupSettings.Height = Unit.Pixel(100) property set in order to fix scroll after that hieght.

After i  hide some top items in JS my other items are hanged in space.

Find attached Screen shot.


Thanks
Sumit Mittal

Yana
Telerik team
 answered on 01 Dec 2009
Narrow your results
Selected tags
Tags
+? more
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?