Hi Telerik,
I facing a similar issue but different way and I tried the solution which you proposed but it is not working.
I am doing a migration from VS 2005(RAD 2003) to 2010 (RAD 2010 Q3 ASP.NET Ajax) - so I can not change the componets in my old code except the modification which is reqired to work RAD 2010 .
here the issue is Radcombobox is not loading properly when it calls. it is always showing null , I have used
ScriptManager.RegisterStartupScript as per your suggestion but it didn't work, I have created a sample project both in 2010 (with RAD 2010) & 2005 (with RAD 2003). it is working perfectly in 2005 but not in 2010- can you please help on this,
I have attached both projects along with this post
code which is working in 2005
default.aspx
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="RadComboBox.Net2" Namespace="Telerik.WebControls" TagPrefix="radC" %>
<! 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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td><span id="comboHolder">
</span>
<radC:RadComboBox
ID="rcbDateRangePicker" runat="server" OnClientBlur="ChangeDate" Height="190px" Width="110px"> </radC:RadComboBox>
</td> <td><asp:Image ID="imgBtn" runat="server" /> </td>
</tr>
</table>
</div>
</form>
</body>
</html>
default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Telerik.WebControls;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RadDatePicker startDateControl = new RadDatePicker();
RadDatePicker endDateControl = new RadDatePicker();
if (!IsPostBack)
{
imgBtn.Attributes.Add("onclick", "TogglePicker();");
DateTime now = DateTime.Now;
DateTime lastMonth = DateTime.Now.AddMonths(-1);
rcbDateRangePicker.Items.Add(new RadComboBoxItem("None"));
AddDate(now, now, "Today");
AddDate(now.AddDays(-30), now, "Last 30 Days");
AddDate(now.AddDays(-45), now, "Last 45 Days");
//set default
(startDateControl as RadDatePicker).DbSelectedDate = DateTime.Now;
(endDateControl as RadDatePicker).DbSelectedDate = DateTime.Now;
}
StringBuilder builder = new StringBuilder();
builder.AppendLine(
"<script type=\"text/javascript\">");
builder.AppendLine("var combo = null;");
builder.AppendLine("try { combo = " + rcbDateRangePicker.ClientID + " } catch(err){}");
builder.AppendLine(@"function TogglePicker()
{
if(combo==null)
{
alert('this object is empty');
var itemSelected = combo.SelectedItem.Value;
alert(itemSelected)
}
else
{
alert('this object is not empty');
var itemSelected = combo.SelectedItem.Value;
alert(itemSelected)
}
}
function ChangeDate()
{
if(combo==null)
{
alert('this object is empty');
var itemSelected = combo.SelectedItem.Value;
}
else
{
alert('this object is not empty');
}
}
"
);
builder.AppendLine(
"</script>");
if (!Page.ClientScript.IsClientScriptBlockRegistered("DateRangeScript"))
Page.ClientScript.RegisterStartupScript(
this.GetType(), "DateRangeScript", builder.ToString());
}
private void AddDate(DateTime startDate, DateTime endDate, string text)
{
RadComboBoxItem item = new RadComboBoxItem(text, text);
item.Attributes.Add("StartDate", startDate.ToString());
item.Attributes.Add("EndDate", endDate.ToString());
if (text.Equals("Today") && !Page.IsPostBack)
item.Selected = true;
rcbDateRangePicker.Items.Add(item);
}
}
================================================================================
code which is not working with 2010
default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<table>
<tr>
<telerik:RadScriptManager ID="radSctMgr" runat ="server">
</telerik:RadScriptManager>
<td><span id="comboHolder">
</span>
<telerik:RadComboBox ID="rcbDateRangePicker" runat="server" OnClientBlur="ChangeDate" Height="190px"
Width="110px">
</telerik:RadComboBox>
</td>
<td><asp:Image ID="imgBtn" runat="server" /> </td>
</tr>
</table>
</asp:Content>
default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using Telerik.Web.UI;
public partial class _Default : System.Web.UI.Page
{
string someScript = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
RadDatePicker startDateControl = new RadDatePicker();
RadDatePicker endDateControl = new RadDatePicker();
if (!IsPostBack)
{
imgBtn.Attributes.Add("onclick", "TogglePicker();");
DateTime now = DateTime.Now;
DateTime lastMonth = DateTime.Now.AddMonths(-1);
rcbDateRangePicker.Items.Add(new RadComboBoxItem("None"));
AddDate(now, now, "Today");
AddDate(now.AddDays(-30), now, "Last 30 Days");
AddDate(now.AddDays(-45), now, "Last 45 Days");
//set default
(startDateControl as RadDatePicker).DbSelectedDate = DateTime.Now;
(endDateControl as RadDatePicker).DbSelectedDate = DateTime.Now;
}
StringBuilder builder = new StringBuilder();
builder.AppendLine("<script type=\"text/javascript\">");
builder.AppendLine("var comboCal = null;");
builder.AppendLine("var comboCal = $find('" + rcbDateRangePicker.ClientID + "');");
// builder.AppendLine("try { comboCal = $find(\"<%=" + rcbDateRangePicker.ClientID + " %>\") } catch(err){}");
//builder.AppendLine("try { comboCal = " + rcbDateRangePicker.ClientID + " } catch(err){}");
builder.AppendLine(@"function TogglePicker()
{
if(comboCal==null)
{
alert('this object is empty');
var itemSelected = comboCal.SelectedValue;
alert(itemSelected);
}
else
{
alert('this object is not empty');
var itemSelected = comboCal.SelectedValue;
alert(itemSelected);
}
}
function ChangeDate()
{
if(comboCal==null)
{
alert('this object is empty');
var itemSelected = comboCal.SelectedValue;
}
else
{
alert('this object is not empty');
}
}
");
builder.AppendLine("</script>");
//someScript = "Sys.Application.add_load(" + builder.ToString() + ");";
//ScriptManager.RegisterStartupScript(Page, this.GetType(), "onload", someScript, true);
if (!Page.ClientScript.IsClientScriptBlockRegistered("DateRangeScript"))
Page.ClientScript.RegisterStartupScript( this.GetType(), "DateRangeScript", builder.ToString());
}
private void AddDate(DateTime startDate, DateTime endDate, string text)
{
RadComboBoxItem item = new RadComboBoxItem(text, text);
item.Attributes.Add("StartDate", startDate.ToString());
item.Attributes.Add("EndDate", endDate.ToString());
if (text.Equals("Today") && !Page.IsPostBack)
item.Selected = true;
rcbDateRangePicker.Items.Add(item);
}
}