I used some code found on this forum to implement checkboxes in a combobox itemtemplate. everything works fine apart from i want the saved items checkbox to be checked when the dropdown is viewed.
any ideas?
here is the front end
here is the backend
any ideas?
here is the front end
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TopFiveArticlesSelector.ascx.cs" Inherits="CMSFormControls_TopFiveArticlesSelector" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <script type="text/javascript"> var hiddenfld = ("<%= this.Hidden.ClientID %>"); var cancelDropDownClosing = false; function StopPropagation(e) { //cancel bubbling e.cancelBubble = true; if (e.stopPropagation) { e.stopPropagation(); } } function onDropDownClosing() { cancelDropDownClosing = false; } function onCheckBoxClick(chk) { var combo = $find("<%= RadComboBox2.ClientID %>"); //holds the text of all checked items var text = ""; //holds the values of all checked items var values = ""; //get the collection of all items var items = combo.get_items(); //enumerate all items for (var i = 0; i < items.get_count(); i++) { var item = items.getItem(i); //get the checkbox element of the current item var chk1 = $get(combo.get_id() + "_i" + i + "_chk1"); if (chk1.checked) { text += item.get_text() + ","; values += item.get_value() + ","; //alert(item.get_value()); } } //remove the last comma from the string text = removeLastComma(text); values = removeLastComma(values); if (text.length > 0) { //set the text of the combobox combo.set_text(text); document.getElementById(hiddenfld).value = values; } else { //all checkboxes are unchecked //so reset the controls combo.set_text(""); } } //this method removes the ending comma from a string function removeLastComma(str) { return str.replace(/,$/,""); }</script><asp:HiddenField ID="Hidden" runat="server"/> <telerik:RadComboBox ID="RadComboBox2" runat="server" Width="400" AllowCustomText="true" DataValueField="DocumentID" DataTextField="Title" EmptyMessage="Select upto 5 articles" OnClientDropDownClosed="onDropDownClosing" > <ItemTemplate> <div onclick="StopPropagation(event)" class="combo-item-template"> <asp:CheckBox runat="server" ID="chk1" Text='<%#Eval("Title")%>' onclick="onCheckBoxClick(this)" /> </div> </ItemTemplate></telerik:RadComboBox>here is the backend
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Web.UI;using System.Web.UI.WebControls;using System.Text;using CMS.SiteProvider;using CMS.CMSHelper;using CMS.GlobalHelper;using Telerik.Web.UI;public partial class CMSFormControls_TopFiveArticlesSelector : CMS.FormControls.FormEngineUserControl{ private DataTable dt = null; protected void Page_Load(object sender, EventArgs e) { ArticleItems(); } /// <summary> /// Gets or sets field value /// </summary> public override Object Value { get { return Hidden.Value.ToString(); } set { // Ensure drop down list options ArticleItems(); Hidden.Value = System.Convert.ToString(value); string[] RelatedID = Hidden.Value.Split(new char[] { ',' }); for (int i = 0; i < dt.Rows.Count; i++) { for (int e = 0; e < RelatedID.Length; e++) { if (dt.Rows[i]["DocumentId"].ToString() == RelatedID[e].ToString()) { RadComboBox2.Text += dt.Rows[i]["Title"].ToString() + ","; CheckBox checkbox = (CheckBox)RadComboBox2.Items[i].FindControl("chk1"); checkbox.Checked = true; } } } } } /// <summary> /// Returns true if some color is selected. If no, it returns false and displays an error message. /// </summary> public override bool IsValid() { if (RadComboBox2.Text != "") { return true; } else { // Set form control validation error message this.ValidationError = "Please Select Tags For This Article"; return false; } } protected void ArticleItems() { DataSet ds = TreeHelper.SelectNodes("/%", false, "CriticalCare.Conclusion;CriticalCare.Literature;CriticalCare.Theory", "", " ", -1, false); dt = new DataTable(); if (!DataHelper.DataSourceIsEmpty(ds)) { for (int i = 0; i < ds.Tables.Count; i++) { dt.Merge(ds.Tables[i]); } RadComboBox2.DataSource = dt; RadComboBox2.DataBind(); for (int i = 0; i < dt.Rows.Count; i++) { CheckBox checkbox = (CheckBox)RadComboBox2.Items[i].FindControl("chk1"); checkbox.ToolTip = dt.Rows[i]["DocumentID"].ToString(); } } }}