CheckBoxes As Custom Field in Documents & Files Module
Posted 4 minutes ago (permalink)
Hello
I want to create a custom filed of checkboxes in the document & files, Where I can check multiple values.
To do this I wrote some code and I got the check boxes list but i am unable to select multiple values or more than one values. On selecting more than one product I am getting this error on popup.
There was an error deserializing the object of type Telerik.Sitefinity.Web.Services.ContentItemContext`1[[Telerik.Sitefinity.Libraries.Model.Document, Telerik.Sitefinity.Model, Version=4.1.1339.0, Culture=neutral, PublicKeyToken=b28c218413bdf563]]. End element 'TEEST' from namespace '' expected. Found element 'item' from namespace ''.
I created a number of classes and a desinger(User control which I inherited from ChoiceField)
Images and Code is attached for the guidance.. Please help me as soon as posssible.
Thanks Alot.
I am unable to upload my code thats why writing it here.
I created 3 classes and a control.
ProductCheckList.ascx
ProductCheckList.cs
SimplechklstFieldDefinition.cs
SimplechklstFieldElement.cs
ProductCheckList.ascx code is below
<%@ Control Language="C#" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI"
TagPrefix="sf" %>
<sf:ConditionalTemplateContainer ID="conditionalTemplate" runat="server">
<Templates>
<sf:ConditionalTemplate ID="ConditionalTemplate2" Left="RenderChoicesAs" Operator="Equal"
Right="CheckBoxes" runat="server">
<sf:SitefinityLabel ID="titleLabel" runat="server" WrapperTagName="div" HideIfNoText="true"
CssClass="sfTxtLbl" />
<asp:CheckBoxList ID="checkBoxes" runat="server" RepeatLayout="Flow" CssClass="sfCheckListBox sfFieldWrp">
</asp:CheckBoxList>
</sf:ConditionalTemplate>
</Templates>
</sf:ConditionalTemplateContainer>
<sf:SitefinityLabel ID="descriptionLabel" runat="server" WrapperTagName="div" HideIfNoText="true"
CssClass="sfDescription" />
<sf:SitefinityLabel ID="exampleLabel" runat="server" WrapperTagName="div" HideIfNoText="true"
CssClass="sfExample" />
ProductCheckList.cs code is below
namespace JPC.Common.Controls.OtherControls
[FieldDefinitionElement(typeof(JPC.Common.Controls.OtherControls.SimplechklstFieldElement))]
public class ChoiceCheckListFieldCustom : ChoiceField
public ChoiceCheckListFieldCustom()
this.RenderChoicesAs = Telerik.Sitefinity.Web.UI.Fields.Enums.RenderChoicesAs.CheckBoxes;
protected override void CreateChildControls()
Telerik.Sitefinity.Lists.Model.List Lst = App.WorkWith().Lists().Where(L => L.Title == "Product Lists").Get().FirstOrDefault();
var IE = Lst.ListItems.Where(l => l.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).OrderBy(o => o.Ordinal);
string UrlProductList = string.Empty;
ChoiceItem cii = new ChoiceItem() Text = "Please Select", Value = Guid.Empty.ToString() ;
this.Choices.Add(cii);
foreach (Telerik.Sitefinity.Lists.Model.ListItem Items in IE)
var Link_ = GetUrl(Convert.ToString(Telerik.Sitefinity.Model.DataExtensions.GetValue(Items, "Link")));
PageNode pg = App.WorkWith().Pages().LocatedIn(Telerik.Sitefinity.Fluent.Pages.PageLocation.Frontend).Where(p => p.GetUrl() == ("~" + Link_)).Get().FirstOrDefault();
if (pg != null)
UrlProductList = pg.GetUrl();
foreach (PageNode P in pg.Nodes)
if (P.ShowInNavigation)
ChoiceItem ci = new ChoiceItem()
Text = P.Title.ToString(),
Value = P.Id.ToString(),
;
this.Choices.Add(ci);
base.CreateChildControls();
protected override string LayoutTemplateName
get
return ChoiceCheckListFieldCustom.layoutTempalte;
public string GetUrl(string Url)
try
if (!string.IsNullOrEmpty(Url))
if (Url.Substring(Url.Length - 1, 1) == "/")
Url = Url.Substring(0, Url.Length - 1);
if (Url.Substring(0, 1) != "/")
Url = "/" + Url;
return Url;
catch (Exception ex)
Classes.BLL.ErrorLogging("Side Nav => " + ex.Message);
return string.Empty;
public override IEnumerable<System.Web.UI.ScriptDescriptor> GetScriptDescriptors()
var descriptors = base.GetScriptDescriptors();
var descriptor = (ScriptControlDescriptor)descriptors.Last();
descriptor.Type = typeof(ChoiceField).FullName;
return descriptors;
private const string layoutTempalte = "JPC.Common.Controls.OtherControls.ProductCheckList.ascx";
SimplechklstFieldDefinition.cs code is below
namespace JPC.Common.Controls.OtherControls
/// <summary>
/// A control definition for the simple image field
/// </summary>
public class SimplechklstFieldDefinition : Telerik.Sitefinity.Web.UI.Fields.Definitions.ChoiceFieldDefinition
/// <summary>
/// Initializes a new instance of the <see cref="SimpleImageFieldDefinition"/> class.
/// </summary>
public SimplechklstFieldDefinition()
: base()
/// <summary>
/// Initializes a new instance of the <see cref="SimpleImageFieldDefinition"/> class.
/// </summary>
/// <param name="element">The configuration element used to persist the control definition.</param>
public SimplechklstFieldDefinition(ConfigElement element)
: base(element)
SimplechklstFieldElement.cs code is below
namespace JPC.Common.Controls.OtherControls
/// <summary>
/// A configuration element used to persist the properties of <see cref="SimpleImageFieldDefinition"/>
/// </summary>
public class SimplechklstFieldElement : Telerik.Sitefinity.Web.UI.Fields.Config.ChoiceFieldElement
/// <summary>
/// Initializes a new instance of the <see cref="SimpleImageFieldElement"/> class.
/// </summary>
/// <param name="parent">The parent.</param>
public SimplechklstFieldElement(ConfigElement parent)
: base(parent)
//Telerik.Sitefinity.Web.UI.Fields.Config.
/// <summary>
/// Gets an instance of the <see cref="SimpleImageFieldDefinition"/> class.
/// </summary>
/// <returns></returns>
public override DefinitionBase GetDefinition()
return new SimplechklstFieldDefinition(this);
Thanks In Advance! Hepl me plz
Thanks
Hello waqar,
Try creating a custom field of type ShortText. Then save the field and from the configuration replace the value of the default custom field of type ShortText with your custom one.
Regards,
Ivan Dimitrov
the Telerik team
i am not getting :-(
Which configuration you are talking about?