Hi, I have this Radcombo with checkbox itemtemplate, without any update panel it works perfectly as I wanted.
But if I add the update pannels in it won't load anymore unless user type in something on the radcombox box
Is there anyway to work around this. I need it to load without have to wait for user to type in a search string
and I also need the loadondemand because it is a huge amount of data to load to the radcombo
Thanks,
Quynh
Default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RadCombo._Default" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> <style type="text/css"> table { border-collapse: collapse; } table tr, td { padding: 3px; } </style> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <asp:ObjectDataSource ID="PatientDS" runat="server" SelectMethod="GetPatient" TypeName="RadCombo.DB" > <SelectParameters> <asp:ControlParameter Name="Study" ControlID="ddlStudy" Type="String" DefaultValue="%" /> <asp:ControlParameter Name="Site" ControlID="ddlSite" Type="String" DefaultValue="%" /> </SelectParameters> </asp:ObjectDataSource> <div> <table> <tr> <td> Study </td> <td> <asp:DropDownList ID="ddlStudy" runat="server" Width="500px" AutoPostBack="true" OnSelectedIndexChanged="ddlStudy_SelectedIndexChanged"> </asp:DropDownList> </td> </tr> <tr> <td> Site </td> <td> <asp:UpdatePanel ID="updatePanel1" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlStudy" EventName="SelectedIndexChanged" /> </Triggers> <ContentTemplate> <asp:DropDownList ID="ddlSite" runat="server" Width="500px" AutoPostBack="true" > </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> </td> </tr> <tr> <td style="height: 130px;" valign="top"> Patient<br /> <asp:CheckBox ID="cbPatientAll" runat="server" Text="Check All" /> </td> <td valign="top"> <asp:UpdatePanel ID="updatePanel2" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlStudy" EventName="SelectedIndexChanged" /> <asp:AsyncPostBackTrigger ControlID="ddlSite" EventName="SelectedIndexChanged" /> </Triggers> <ContentTemplate> <telerik:RadComboBox ID="cblPatient" runat="server" Skin="Office2007" DataSourceID="PatientDS" EmptyMessage="All Patients" DataTextField="TEXT" DataValueField="VALUE" ShowMoreResultsBox="true" ItemsPerRequest="250" LoadingMessage="Retrieving Patients" EnableAutomaticLoadOnDemand="true" Filter="Contains" MaxHeight="100px" Height="100px" AllowCustomText="false" OnItemDataBound="CB1_ItemDataBound" HighlightTemplatedItems="False" Width="300px" OpenDropDownOnLoad="true" OnClientDropDownClosing="onDropDownClosing" OnDataBound="CB1_DataBound"> <ItemTemplate> <div onclick="StopPropagation(event)"> <asp:CheckBox runat="server" ID="chk1" /> <asp:Label runat="server" ID="label1" AssociatedControlID="chk1"><%# DataBinder.Eval(Container, "Text") %></asp:Label> </div> </ItemTemplate> <CollapseAnimation Duration="200" Type="OutQuint" /> </telerik:RadComboBox> <asp:HiddenField ID="HV1" runat="server" /> </ContentTemplate> </asp:UpdatePanel> </td> </tr> </table> </div> <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script> <script type="text/javascript"> // NOTE - these two functions can be moved to the page function StopPropagation(e) { //cancel bubbling e.cancelBubble = true; if (e.stopPropagation) { e.stopPropagation(); } } function onDropDownClosing(sender, eventArgs) { eventArgs.set_cancel(true); } function allchecked(box) { var combo = $find(box); var items = combo.get_items(); for (var i = 0; i < items.get_count(); i++) { var item = items.getItem(i); var chk1 = $get(combo.get_id() + '_i' + i + '_chk1'); if (!chk1.checked) return false; } return true; } function onCheckBoxClick(me) { var cb = $("#<%=cbPatientAll.ClientID%>"); cb.attr('checked', allchecked('<%=cblPatient.ClientID%>')); var chk1 = $get(me.id); var i = me.id.replace("<%=cblPatient.ClientID%>", "").replace("_chk1", "").replace("_i", ""); //alert(i); var combo = $find('<%=cblPatient.ClientID%>'); var items = combo.get_items(); var item = items.getItem(i); var keepValue = $("#<%=HV1.ClientID %>").val(); if (chk1.checked) { keepValue += item.get_value() + ','; } else { keepValue = keepValue.replace(item.get_value() + ',', ''); } $("#<%=HV1.ClientID %>").val(keepValue); } $(document).ready(function () { $("#<%= cbPatientAll.ClientID %>").click(function (event) { var keepValue = ""; var combo = $find('<%=cblPatient.ClientID%>'); var items = combo.get_items(); for (var i = 0; i < items.get_count(); i++) { var item = items.getItem(i); var chk1 = $get(combo.get_id() + '_i' + i + '_chk1'); chk1.checked = $('#' + this.id).is(':checked'); if ($('#' + this.id).is(':checked')) { keepValue += item.get_value() + ','; } } $("#<%=HV1.ClientID %>").val(keepValue); }); }); function pageLoad(sender, args) { $("#<%= ddlSite.ClientID %>").change(function () { //var combo = $find('<%=cblPatient.ClientID%>'); //combo.clearItems(); //combo.requestItems(' ', false); }); } </script> </asp:Content> Default.aspx.cs using System; using System.Text; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Telerik.Web.UI; namespace RadCombo { public partial class _Default : System.Web.UI.Page { private string Delimiter = ","; private DB myDBProc = new DB(); //DBProcessing Class Library protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { myDBProc.GetStudy(ddlStudy); } } protected void CB1_ItemDataBound(object sender, RadComboBoxItemEventArgs e) { (e.Item.FindControl("chk1") as CheckBox).Attributes["onclick"] = "onCheckBoxClick(this)"; if (HV1.Value.Contains(e.Item.Value)) (e.Item.FindControl("chk1") as CheckBox).Checked = true; } protected void CB1_DataBound(object sender, EventArgs e) { HV1.Value = ""; StringBuilder sbValues = new StringBuilder(); foreach (Telerik.Web.UI.RadComboBoxItem rcbItem in cblPatient.Items) { //If the box is checked return a value CheckBox cb = (CheckBox)rcbItem.FindControl("chk1"); if (null != cb && cb.Checked) { sbValues.Append(rcbItem.Value); sbValues.Append(Delimiter); } } HV1.Value = sbValues.ToString(); } protected void btnExecute_Click(object sender, EventArgs e) { string test = HV1.Value; } protected void ddlStudy_SelectedIndexChanged(object sender, EventArgs e) { myDBProc.GetSite(ddlSite, ddlStudy.SelectedValue); } } } DB.cs sing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Web.UI.WebControls; namespace RadCombo { public class DB { public void GetStudy( DropDownList list) { DataTable dt = new DataTable(); dt.Columns.Add( new DataColumn("VALUE", typeof(int))); dt.Columns.Add(new DataColumn("TEXT", typeof(string))); DataRow dr = dt.NewRow(); dr["Value"] = 1; dr["TEXT"] = "One"; dt.Rows.Add(dr); list.DataValueField = dt.Columns["VALUE"].ColumnName; list.DataTextField = dt.Columns["TEXT"].ColumnName; list.DataSource = dt; list.DataBind(); list.Items.Insert(0, new ListItem("Select a Study", "")); } public void GetSite( DropDownList list, string Study) { if (string.IsNullOrEmpty(Study) || Study == "%") { list.Items.Clear(); return; } DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("VALUE", typeof(int))); dt.Columns.Add(new DataColumn("TEXT", typeof(string))); DataRow dr = dt.NewRow(); dr["Value"] = 11; dr["TEXT"] = "Eleven"; dt.Rows.Add(dr); list.DataValueField = dt.Columns["VALUE"].ColumnName; list.DataTextField = dt.Columns["TEXT"].ColumnName; list.DataSource = dt; list.DataBind(); list.Items.Insert(0, new ListItem("All Sites", "%")); list.Items.Insert(0, new ListItem("Select a Site", "")); } public DataTable GetPatient(string Study, string Site) { if (string.IsNullOrEmpty(Study) || Study == "%" || string.IsNullOrEmpty(Site)) { return new DataTable(); } DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("VALUE", typeof(int))); dt.Columns.Add(new DataColumn("TEXT", typeof(string))); DataRow dr = dt.NewRow(); dr["Value"] = 100; dr["TEXT"] = "One Hundred"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Value"] = 101; dr["TEXT"] = "One Hundred And One"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Value"] = 102; dr["TEXT"] = "One Hundred And Two"; dt.Rows.Add(dr); return dt; } } }