Folks,
Using VS 2010 with RadControls for ASP.NET AJAX Q3 2012 SP2. Using this below link as a Prototype (the 1st example: Grid-like multi-column):
http://demos.telerik.com/aspnet-ajax/combobox/examples/functionality/multicolumncombo/defaultcs.aspx
My question is: How to hide an item alongwith it's other attribute columns from that Multi Column RadCombo Box and Put that item along with its attributes always on top of the list. Example: I would like the Item with Customer id BONAP will always be the 1st Item (i.e. apprear before Customer Id: ALFKI). Attached is my desired result.
In the past I was able to hide and insert the item on the Top with Single Column in Item Databound event with below code.
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode && e.Item.OwnerTableView.Name == "MainClientAddress")
{
string defaultstate = "New York";
GridEditableItem itm = e.Item as GridEditableItem;
RadComboBox rb = (RadComboBox)itm.FindControl("RadComboBoxState");
RadComboBoxItem citem = rb.Items.FindItemByText(defaultstate);
rb.Items.Remove(citem);
rb.Items.Insert(0, citem);
}
}
But here I am dealing with Multi- Column Rad ComboBox. Below is my complete declaration, Any help will be appreciated.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ServerItemAddTemplateCombo.aspx.cs"
Inherits="ServerItemAddTemplateCombo" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
<
title
></
title
>
<
link
href
=
"StyleSheet.css"
rel
=
"stylesheet"
type
=
"text/css"
/>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
</
telerik:RadScriptManager
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"RadComboBox1"
Height
=
"190px"
Width
=
"520px"
AutoPostBack
=
"true"
AppendDataBoundItems
=
"true"
MarkFirstMatch
=
"true"
DataSourceID
=
"SqlDataSource1"
EnableLoadOnDemand
=
"true"
HighlightTemplatedItems
=
"true"
OnClientItemsRequested
=
"UpdateItemCountField"
OnDataBound
=
"RadComboBox1_DataBound"
OnItemDataBound
=
"RadComboBox1_ItemDataBound"
OnItemsRequested
=
"RadComboBox1_ItemsRequested"
Label
=
"Grid-like multi-column:"
>
<
HeaderTemplate
>
<
ul
>
<
li
class
=
"col1"
>Customer Id</
li
>
<
li
class
=
"col1"
>Contact Name</
li
>
<
li
class
=
"col2"
>City</
li
>
<
li
class
=
"col3"
>Title</
li
>
</
ul
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
ul
>
<
li
class
=
"col1"
>
<%# DataBinder.Eval(Container.DataItem, "CustomerId") %></
li
>
<
li
class
=
"col1"
>
<%# DataBinder.Eval(Container.DataItem, "ContactName") %></
li
>
<
li
class
=
"col2"
>
<%# DataBinder.Eval(Container.DataItem, "City") %></
li
>
<
li
class
=
"col3"
>
<%# DataBinder.Eval(Container.DataItem, "ContactTitle") %></
li
>
</
ul
>
</
ItemTemplate
>
<
FooterTemplate
>
A total of
<
asp:literal
runat
=
"server"
id
=
"RadComboItemsCount"
/>
items
</
FooterTemplate
>
</
telerik:RadComboBox
>
</
div
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString %>"
SelectCommand="SELECT * FROM [Customers] ORDER BY [CustomerID]"></
asp:SqlDataSource
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function UpdateItemCountField(sender, args) {
//Set the footer text.
sender.get_dropDownElement().lastChild.innerHTML = "A total of " + sender.get_items().get_count() + " items";
}
</
script
>
</
telerik:RadScriptBlock
>
</
form
>
</
body
>
</
html
>
__________
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;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class ServerItemAddTemplateCombo : System.Web.UI.Page
{
protected void RadComboBox1_DataBound(object sender, EventArgs e)
{
//set the initial footer label
((Literal)RadComboBox1.Footer.FindControl("RadComboItemsCount")).Text = Convert.ToString(RadComboBox1.Items.Count);
}
protected void RadComboBox1_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
//get all customers whose name starts with e.Text
string sql = "SELECT * from Customers WHERE ContactName LIKE '" + e.Text + "%'";
SqlDataSource1.SelectCommand = sql;
RadComboBox1.DataBind();
}
protected void RadComboBox1_ItemDataBound(object sender, RadComboBoxItemEventArgs e)
{
//set the Text and Value property of every item
//here you can set any other properties like Enabled, ToolTip, Visible, etc.
e.Item.Text = ((DataRowView)e.Item.DataItem)["ContactName"].ToString();
e.Item.Value = ((DataRowView)e.Item.DataItem)["CustomerID"].ToString();
}
}
Thanks
gc_0620