I have a combo box inside an ajax panel like so
When I click in it, it loads items and if I start typing, it also searches correctly. However, once I select an item, no more items will load. Even if I delete text, nothing comes up. Here's my code behind
Here's a video of what's happening. How do I make it pull the dropdown again, even after you select an item. https://dl.dropboxusercontent.com/u/4979877/combo.swf
<
telerik:RadScriptManager
ID
=
"manager"
runat
=
"server"
></
telerik:RadScriptManager
>
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel3"
runat
=
"server"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
<
telerik:RadComboBox
ID
=
"userInput"
runat
=
"server"
AllowCustomText
=
"True"
CausesValidation
=
"false"
ShowToggleImage
=
"False"
ShowMoreResultsBox
=
"true"
EnableLoadOnDemand
=
"True"
MarkFirstMatch
=
"True"
OnItemsRequested
=
"LoadSearch"
ErrorMessage
=
"Value not Found"
AutoPostBack
=
"True"
Width
=
"300"
>
<
CollapseAnimation
Duration
=
"1000"
Type
=
"InBack"
/>
</
telerik:RadComboBox
>
</
telerik:RadAjaxPanel
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
SkinID
=
"Hay"
Height
=
"25px"
Transparency
=
"1"
BackgroundPosition
=
"Center"
>
<
img
alt
=
"Loading..."
src
=
"../images/loading.gif"
style
=
"border: 0px;"
/>
</
telerik:RadAjaxLoadingPanel
>
When I click in it, it loads items and if I start typing, it also searches correctly. However, once I select an item, no more items will load. Even if I delete text, nothing comes up. Here's my code behind
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
userInput.DataSource = GetCustomers();
userInput.DataValueField = "Key";
userInput.DataTextField = "Value";
userInput.DataBind();
}//if !page.ispost
}//PageLoad
protected void LoadSearch(object sender, RadComboBoxItemsRequestedEventArgs e)
{
//get the list based on the search
IEnumerable<
Vw_CustomersSearchView
> customers = DbRepository.GetCustomersSearchView().Where(c => c.Customer.Contains(e.Text));
//how many items we'll show
int itemsPerReq = 10;
//keep count of the items
int count = 0;
RadComboBox box = (RadComboBox)sender;
box.Items.Clear();
//make sure we have at least one record
if (customers.Count() > 0)
{
//now add any customer items
foreach (var i in customers)
{
//if we're above 10, exit the loop
if (count >= itemsPerReq)
{
break;
}//if count > itemsper
//if we're here, add the items
box.Items.Add(new RadComboBoxItem(i.Customer, i.UserName));
count++;
}//foreach
}//if customers.count
else
{
e.Message = "No matches";
}
}//LoadSearch
/// <
summary
>
/// this returns a dictionary of the customers for the customer dropdown
/// </
summary
>
/// <
returns
></
returns
>
protected Dictionary<
string
, string> GetCustomers()
{
Dictionary<
string
, string> customersList = new Dictionary<
string
, string>();
//now add the items
var cTable = DbRepository.GetActiveCustomers().Where(a => a.LoyaltyCardNumber != null).Select(a => new {a.UserName, a.FirstName, a.LoyaltyCardNumber, a.LastName});
foreach (var i in cTable)
{
string name = String.Format("{0}{1}{2}{3}{4}", i.FirstName, " ", i.LastName, " - ", i.LoyaltyCardNumber);
customersList.Add(i.UserName, name);
}//foreach
return customersList;
}//GetCustomers
/// <
summary
>
/// if they picked an item in the combox box, repopulate it
/// </
summary
>
/// <
param
name
=
"sender"
></
param
>
/// <
param
name
=
"e"
></
param
>
protected void userInput_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
userInput.DataSource = GetCustomers();
userInput.DataValueField = "Key";
userInput.DataTextField = "Value";
userInput.DataBind();
}//resetPasswordButtonClick
Here's a video of what's happening. How do I make it pull the dropdown again, even after you select an item. https://dl.dropboxusercontent.com/u/4979877/combo.swf