7 Answers, 1 is accepted
Please have a look into the following C# code snippet which works fine at my end.
C#:
protected
void
Page_Load(
object
sender, EventArgs e)
{
Telerik.Web.UI.RadComboBox combo =
new
Telerik.Web.UI.RadComboBox();
combo.ID =
"RadComboBox1"
;
combo.AutoPostBack =
true
;
combo.EmptyMessage =
"Select"
;
combo.EnableLoadOnDemand =
true
;
combo.ItemsRequested +=
new
Telerik.Web.UI.RadComboBoxItemsRequestedEventHandler(combo_ItemsRequested);
form1.Controls.Add(combo);
}
void
combo_ItemsRequested(
object
sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
Telerik.Web.UI.RadComboBox combo = (Telerik.Web.UI.RadComboBox)sender;
String connstring = WebConfigurationManager.ConnectionStrings[
"NorthwindConnectionString"
].ConnectionString;
SqlConnection conn =
new
SqlConnection(connstring);
SqlDataAdapter adapter =
new
SqlDataAdapter();
adapter.SelectCommand =
new
SqlCommand(
"SELECT Cityname from City "
, conn);
DataTable data =
new
DataTable();
conn.Open();
try
{
adapter.Fill(data);
combo.DataSource = data;
combo.DataTextField =
"Cityname"
;
combo.DataBind();
}
finally
{
conn.Close();
}
}
Let me know if you have any concern.
Thanks,
Shinu.
We are using telerik(2013.3.1114.45)version in visual studio 2012.
Dynamic Rad combobox load on demand time,Iam getting "There was error in callback" this error.
Please have a look into the following forum thread which deals the same issue. Please provide your code if it doesn't help.
Load On Demand and Exception handling.
Server Error in the ItemRequest Event.
Thanks,
Shinu.
Hi Shinu,
Please check error .verify the below mentioned code also.
public void InstantiateIn(System.Web.UI.Control container)
{
combo = new RadComboBox();
combo.ID =
colname;
combo.AutoPostBack = true;
combo.AppendDataBoundItems = true;
combo.AllowCustomText =
true;
combo.CheckBoxes = true;
combo.AutoPostBack = true;
combo.EnableCheckAllItemsCheckBox
= true;
combo.CheckedItemsTexts =
RadComboBoxCheckedItemsTexts.DisplayAllInInput;
combo.MarkFirstMatch = true;
combo.HighlightTemplatedItems =
true;
combo.EmptyMessage = "All";
combo.NoWrap = false;
combo.CssClass =
"target-users-popup-dropdown";
combo.DropDownCssClass =
"target-users-popup-dropdown-1";
combo.Localization.AllItemsCheckedString = "All";
combo.Localization.CheckAllString = "All";
combo.OnClientDropDownClosing = "ShowModalPopup";
combo.PreRender += new EventHandler(combo_PreRender);
combo.EnableLoadOnDemand = true;
combo.ShowMoreResultsBox =
true;
combo.ItemsPerRequest=10;
combo.EnableVirtualScrolling = true;
combo.SelectedIndexChanged += new
RadComboBoxSelectedIndexChangedEventHandler(l_SelectedIndexChanged);
combo.ItemDataBound += new
RadComboBoxItemEventHandler(combo_ItemDataBound);
combo.ItemsRequested += new
RadComboBoxItemsRequestedEventHandler(combo_ItemsRequested);
combo.DataValueField = colname;
combo.DataTextField =
colname;
combo.DataBind();
container.Controls.Add(combo);
}
void combo_ItemsRequested(object sender,
RadComboBoxItemsRequestedEventArgs e)
{
int
ItemsPerRequest = 10;
RadComboBox combo = (RadComboBox)sender;
if (combo != null)
{
int itemOffset =
e.NumberOfItems;
);
List<string>
data = GetUserProfieColumnData(combo.DataValueField, itemOffset,
ItemsPerRequest);
e.EndOfItems = ItemsPerRequest > data.Count;
for (int i = 0; i < data.Count;
i++)
{
combo.Items.Add(new RadComboBoxItem(data[i].ToString(),
data[i].ToString()));
}
obj.ComboPrerender(sender, e);
}
}
Please try the following code snippet which works fine at my end.
C#:
protected
void
Page_Load(
object
sender, EventArgs e)
{
Telerik.Web.UI.RadComboBox combo;
string
colname =
"CompanyName"
;
combo =
new
RadComboBox();
combo.ID = colname;
combo.AutoPostBack =
true
;
combo.AppendDataBoundItems =
true
;
combo.AllowCustomText =
true
;
combo.CheckBoxes =
true
;
combo.AutoPostBack =
true
;
combo.EnableCheckAllItemsCheckBox =
true
;
combo.CheckedItemsTexts = RadComboBoxCheckedItemsTexts.DisplayAllInInput;
combo.MarkFirstMatch =
true
;
combo.HighlightTemplatedItems =
true
;
combo.EmptyMessage =
"All"
;
combo.NoWrap =
false
;
combo.CssClass =
"target-users-popup-dropdown"
;
combo.DropDownCssClass =
"target-users-popup-dropdown-1"
;
combo.Localization.AllItemsCheckedString =
"All"
;
combo.Localization.CheckAllString =
"All"
;
combo.EnableLoadOnDemand =
true
;
combo.ShowMoreResultsBox =
true
;
combo.ItemsPerRequest = 10;
combo.EnableVirtualScrolling =
true
;
combo.ItemsRequested +=
new
RadComboBoxItemsRequestedEventHandler(combo_ItemsRequested);
combo.DataValueField = colname;
combo.DataTextField = colname;
combo.DataBind();
form1.Controls.Add(combo);
}
void
combo_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
RadComboBox combo = (RadComboBox)sender;
DataTable data = GetData(e.Text);
int
itemOffset = e.NumberOfItems;
int
endOffset = Math.Min(itemOffset + ItemsPerRequest, data.Rows.Count);
e.EndOfItems = endOffset == data.Rows.Count;
for
(
int
i = itemOffset; i < endOffset; i++)
{
combo.Items.Add(
new
RadComboBoxItem(data.Rows[i][
"CompanyName"
].ToString(), data.Rows[i][
"CompanyName"
].ToString()));
}
e.Message = GetStatusMessage(endOffset, data.Rows.Count);
}
private
static
DataTable GetData(
string
text)
{
SqlDataAdapter adapter =
new
SqlDataAdapter(
"SELECT * from Customers "
, ConfigurationManager.ConnectionStrings[
"NorthwindConnectionString"
].ConnectionString);
DataTable data =
new
DataTable();
adapter.Fill(data);
return
data;
}
private
static
string
GetStatusMessage(
int
offset,
int
total)
{
if
(total <= 0)
return
"No matches"
;
return
String.Format(
"Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>"
, offset, total);
}
Hope this will helps you.
Thanks,
Shinu.
In my code OnItemRequestedEvent I am trying to access all the data from the table and adding items to the RadComboBox based on the current itemoffset and endoffset values. So first it will add only 10 items to the RadComboBox and then from 10 to 20 items and so on. The GetStatusMessage is used to display the status of the RadComboBoxItems.
Thanks,
Shinu.