Accessing item level details from template controls

1 posts, 0 answers
  1. Neil
    Neil avatar
    16 posts
    Member since:
    Mar 2007

    Posted 08 Feb 2013 Link to this post

    I recently had a need to build a dynamic "form" for a simple database driven search engine.  I tried several different approaches and was satisfied with none until I tried using the RadListBox (probably could have used RadListView as well).  After spending quite some time trying to figure out how to manipulate the individual controls inside the RadListItems, I stumbled upon the solution and thought I would share.  Hope this helps some one out there!
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchUtil.aspx.cs" Inherits="CustomCo.SearchUtil" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
    <head runat="server">
        <form id="form1" runat="server">
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        <telerik:RadListBox ID="rlbSearchParams" runat="server" Width="80%" ClientIDMode="Predictable">
                    <asp:Image ID="imgBlank0" runat="server" ImageUrl="~/Images/Templates/blank0.png" Width="75px" Height="1px" Visible="false" />
                    <telerik:RadComboBox ID="ddlAndOr" runat="server" Width="75px">
                            <telerik:RadComboBoxItem Text="AND" Value="0" />
                            <telerik:RadComboBoxItem Text="OR" Value="1" />
                    <telerik:RadComboBox ID="ddlParamName" runat="server" Width="200px">
                            <telerik:RadComboBoxItem Text="Author Name" Value="AuthorName" />
                            <telerik:RadComboBoxItem Text="Title" Value="Title" />
                            <telerik:RadComboBoxItem Text="Account Team" Value="AccountTeam" />
                    <telerik:RadTextBox ID="txtParamValue" runat="server" Width="200px" />
                    <asp:Button ID="btnAdd" runat="server" Text="+" CommandName="Add" OnClick="btnAdd_Click" />
                    <asp:Button ID="btnRemove" runat="server" Text="-" CommandName="Remove" OnClick="btnRemove_Click" />

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Telerik.Web.UI;
    namespace CustomCo
        public partial class AdvancedSearch : System.Web.UI.Page
            protected void Page_Load(object sender, EventArgs e)
                if (rlbSearchParams.Items.Count < 1)
            private void CreateForm()
                RadListBoxItem firstItem = new RadListBoxItem();
                RadComboBox myAndOR = rlbSearchParams.Items[0].FindControl("ddlAndOr") as RadComboBox;
                myAndOR.Visible = false;
                Image Spacer = rlbSearchParams.Items[0].FindControl("imgBlank0") as Image;
                Spacer.Visible = true;
                Button myRemoveButton = rlbSearchParams.Items[0].FindControl("btnRemove") as Button;
                myRemoveButton.Visible = false;
                myRemoveButton.CommandArgument = "0";
            protected void btnAdd_Click(object sender, EventArgs e)
                RadListBoxItem secondItem = new RadListBoxItem();
                Button myRemoveButton = rlbSearchParams.Items[0].FindControl("btnRemove") as Button;
                myRemoveButton.CommandArgument = (rlbSearchParams.Items.Count - 1).ToString();
                Button myPreviousAddButton = rlbSearchParams.Items[(rlbSearchParams.Items.Count - 2)].FindControl("btnAdd") as Button;
                myPreviousAddButton.Visible = false;
            protected void btnRemove_Click(object sender, EventArgs e)
                Button mySender = (Button)sender;
                RadListBoxItem myItem = (RadListBoxItem)mySender.Parent;
                if (myItem != null)
                        case 0:
                        case 1:
                            Button myPreviousAddButton = rlbSearchParams.Items[0].FindControl("btnAdd") as Button;
                            myPreviousAddButton.Visible = true;
                            if (rlbSearchParams.Items.Count - 1 == myItem.Index)
                                Button defaultPreviousAddButton = rlbSearchParams.Items[myItem.Index - 1].FindControl("btnAdd") as Button;
                                defaultPreviousAddButton.Visible = true;
                            if (rlbSearchParams.Items.Count > 1)
                                Button defaultPreviousRemoveButton = rlbSearchParams.Items[myItem.Index - 1].FindControl("btnRemove") as Button;
                                defaultPreviousRemoveButton.Visible = true;
Back to Top