Tuesday, October 25, 2011

RadComboBox autocomplete search - Get SelectedValue when press the EnterKey

Scenario:- In a situation where Enter KeyPress is configured to fire up a button event(Eg : Search) and  there is a autocomplete search  in RadComboBox;  How to get the RadComboBox SelectedValuein the keypress event?

Sample
Web Page(aspx)

<script type="text/javascript">
        function keyHandler(event) {
            var ENTERKEY = 13;
            var firedKey = (event.keyCode) ? event.keyCode : event.charCode;
            if (firedKey == ENTERKEY) {
                Search();
            }
        }

        function Search() {

            var postBackValue;
            var controlClientID = "<%= btnSearch.ClientID %>";
            postBackValue = controlClientID;
            while (postBackValue.indexOf('_') > -1)
                postBackValue = postBackValue.replace('_', '$');
            __doPostBack(postBackValue, '');
        }
</script>

<div id="Div1" runat="server" onkeydown="keyHandler(event)">

<telerik:RadComboBox ID="RadCmbUser" runat="server" Skin="Myskin" EnableLoadOnDemand="True"
EnableVirtualScrolling="True" EmptyMessage="Search for User..." AutoPostBack="True" OnItemsRequested="RadCmbUser_ItemsRequested" ItemsPerRequest="5" MarkFirstMatch="True">
</telerik:RadComboBox>

<asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_OnClick" />

</div>


Web Page(cs)
 


protected void RadCmbUser_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e)
{
   IEnumerable<User> users = UsersList.Where(a => a.UserName.StartsWith(e.Text));

   foreach (User user in users)
     {
        RadCmbUser.Items.Add(new RadComboBoxItem(user.UserName, user.UserId.ToString()));
     }
}


protected void btnSearch_OnClick(object sender, EventArgs e)
{
       dataGrid.DataSource = GetUserInformationList(RadCmbUser.SelectedValue);
}

No comments: