or
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; } } }<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" GridLines="None" ShowGroupPanel="True" Skin="Outlook" OnDetailTableDataBind="RadGrid1_DetailTableDataBind" HorizontalAlign="Left" DataMember="T_Company" onitemcommand="RadGrid1_ItemCommand" onneeddatasource="RadGrid1_NeedDataSource" onitemdatabound="RadGrid1_ItemDataBound" onprerender="RadGrid1_PreRender"> <ClientSettings AllowDragToGroup="True"> </ClientSettings> <MasterTableView Name="abc_" AutoGenerateColumns="false" AllowMultiColumnSorting="True" GridLines="Horizontal" DataKeyNames="CompanyID" DataMember="T_Company" GroupsDefaultExpanded="true"> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="CustomerID" MasterKeyField="CustomerID" /> </ParentTableRelation> <ExpandCollapseColumn Visible="True"> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="CompanyName" HeaderText="Dịch Vụ" UniqueName="column2"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn DataField="Deposit" HeaderText="Đặt Cọc" UniqueName="column"> <EditItemTemplate> <asp:Label ID="DepositLabel" runat="server" Text='<%# Eval("Deposit") %>'></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:TextBox ID="DepositTextBox" runat="server" Text='<%# Bind("Deposit") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="column1" HeaderText="Người Thanh Toán"> <EditItemTemplate> </EditItemTemplate> <ItemTemplate> <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource1" DataTextField="GuiderName" DataValueField="GuiderID"> </asp:DropDownList> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <DetailTables> <telerik:GridTableView Name="show_" runat="server" Visible="true" DataKeyNames="CompanyID" DataMember="CompanyID" Width="100%" AutoGenerateColumns="false" GridLines="Horizontal" ShowFooter="True" Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" ForeColor="Blue"> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="CompanyID" MasterKeyField="CompanyID" /> </ParentTableRelation> <Columns> <telerik:GridTemplateColumn DataField="OrderID" HeaderText="ID" UniqueName="column1"> <EditItemTemplate> <asp:TextBox ID="OrderIDTextBox" runat="server" Text='<%# Bind("OrderID") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="OrderIDLabel" runat="server" Text='<%# Eval("OrderID") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="ProvideName" HeaderText="Dịch Vụ" UniqueName="column2"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="CurrentPrice" HeaderText="Đơn Giá" UniqueName="column3"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn DataField="BookQty" HeaderText="SL Dự Kiến" UniqueName="column4"> <EditItemTemplate> <asp:TextBox ID="BookQtyTextBox" runat="server" Text='<%# Bind("BookQty") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="BookQtyLabel" runat="server" Text='<%# Eval("BookQty") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="PriceOper" HeaderText="TT Dự Kiến" UniqueName="column5"> <EditItemTemplate> <asp:TextBox ID="PriceOperTextBox" runat="server" Text='<%# Bind("PriceOper") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="PriceOperLabel" runat="server" Text='<%# Eval("PriceOper") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="CurrentQty" HeaderText="SL thực Tế" UniqueName="column6" DataType="System.Int32"> <EditItemTemplate> <asp:Label ID="CurrentQtyLabel" runat="server" Text='<%# Eval("CurrentQty") %>'></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:TextBox ID="CurrentQtyTextBox" runat="server" Width="50" Text='<%# Eval("CurrentQty") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="CurrentPay" HeaderText="TT Thực Tế" UniqueName="column7" DataType="System.Int32"> <EditItemTemplate> <asp:Label ID="CurrentPayLabel" runat="server" Text='<%# Eval("CurrentPay") %>'></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:TextBox ID="CurrentPayTextBox" runat="server" Width="50" Text='<%# Eval("CurrentPay") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="DifferenceQty" HeaderText="SL Phát Sinh" UniqueName="column9"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="DifferencePrice" HeaderText="CP Phát Sinh" UniqueName="column10"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="TotalPrice" HeaderText="Thành Tiền" UniqueName="column11"> </telerik:GridBoundColumn> </Columns> <FooterStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" ForeColor="Red" Wrap="True" /> </telerik:GridTableView> </DetailTables> </MasterTableView> </telerik:RadGrid><asp:Button ID="Button1" runat="server" Text="Tiếp Tục" onclick="Button1_Click" />| protected void RefreshData() |
| { |
| DataSet ds; |
| string query; |
| string tableName; |
| // clear old data |
| UserMsg.Text = ""; |
| Cache.Remove("wadv_ds"); |
| clearGrid(); |
| // get data |
| tableName = cbTableList.SelectedValue; |
| query = @"SELECT * FROM " + tableName; |
| ds = dba.ReadData(query, tableName); |
| // update grid |
| if (ds == null) |
| { |
| UserMsg.Text = "DataSet is null."; |
| } |
| else if (ds.Tables[0].Rows.Count == 0) |
| { |
| UserMsg.Text = "Table has no data."; |
| } |
| else |
| { |
| Cache["wadv_ds"] = ds.Tables[0]; |
| rgData.DataSource = ds.Tables[0]; |
| rgData.DataBind(); // <=== ERROR OCCURS HERE |
| } |
| } |
| //------------------------------------------------------------------------- |
| protected void clearGrid() |
| { |
| rgData.DataSource = null; |
| rgData.DataBind(); |
| rgData.Columns.Clear(); |
| } |
| //------------------------------------------------------------------------- |
public static void resetForm(Control parent) { foreach (Control c in parent.Controls) { if (c.Controls.Count > 0) { resetForm(c); } else { switch (c.GetType().ToString()) { case "Telerik.Web.UI.RadTextBox": ((RadTextBox)c).Text = ""; break; case "Telerik.Web.UI.RadComboBox": ((RadComboBox)c).ClearSelection(); ((RadComboBox)c).Text = string.Empty; break; case "Telerik.Web.UI.RadTimePicker": ((RadTimePicker)c).Clear(); break; case "Telerik.Web.UI.RadDatePicker": ((RadDatePicker)c).Clear(); break; case "System.Web.UI.WebControls.CheckBox": ((CheckBox)c).Checked = false; break; } } } }