Hi Telerik Team,
i'm using ASP>NET AJAX RadAutoCompleteBox. I set the DatasourceId its working fine. I can go through the filtered items with "UP" and "Down" keys, but I want to select an item with "TAB" and "ENTER" Key. When I hit TAB or ENTER on dropdown item it should select that item and the OnTextChanged Event should fire.
I checked the Demo there its selecting when I hit TAB & Enter. But on my screen its not working. Is I missed or messed something.
My code for your reference.
Thanks,
<telerik:RadAutoCompleteBox ID="txtPolicyNo" runat="server" Width="100px" DropDownWidth="98px" DropDownHeight="200px" DataSourceID="edsPolicy" DataTextField="PolicyNumber" Filter="StartsWith" InputType="Text" OnTextChanged="txtPolicyNo_TextChanged" TextSettings-SelectionMode="Single">
<TokensSettings AllowTokenEditing="true" />
</telerik:RadAutoCompleteBox>
<asp:EntityDataSource ID="edsPolicy" runat="server" ConnectionString="name=PSSContainer" DefaultContainerName="PSSContainer"
EnableFlattening="false" EntitySetName="tblPolicies" OrderBy="it.[PolicyNumber]" Select="it.[PolicyNumber]"
GroupBy="it.[PolicyNumber]"
Where="it.Chapter = @ChapterCode and it.IsPolicy = @IsPolicyOrProcedure">
<WhereParameters>
<asp:ControlParameter ControlID="ddlChapter" DbType="String"
DefaultValue="" Name="ChapterCode" PropertyName="Text" />
<asp:ControlParameter ControlID="hfServiceType" DbType="Boolean"
DefaultValue="" Name="IsPolicyOrProcedure" PropertyName="Value" />
</WhereParameters>
</asp:EntityDataSource>
protected void txtPolicyNo_TextChanged(object sender, Telerik.Web.UI.AutoCompleteTextEventArgs e)
{
try
{
string PolicyNo = txtPolicyNo.Text;
if (PolicyNo.Length > 0)
{
//PolicyNo = PolicyNo.Substring(0, PolicyNo.Length - 2);
PolicyNo = PolicyNo.Replace("; ", "");
'
'
'
'
}
}
catch (Exception ex)
{
}
}
6 Answers, 1 is accepted
Please try the following code I wrote which works fine at my end.
ASPX:
<
telerik:RadAutoCompleteBox
ID
=
"RadAutoCompleteBox1"
runat
=
"server"
Width
=
"100px"
DropDownWidth
=
"98px"
DropDownHeight
=
"200px"
DataSourceID
=
"SqlDataSource1"
DataTextField
=
"ContactName"
Filter
=
"StartsWith"
InputType
=
"Text"
TextSettings-SelectionMode
=
"Single"
OnTextChanged
=
"RadAutoCompleteBox1_TextChanged"
>
<
TokensSettings
AllowTokenEditing
=
"true"
/>
</
telerik:RadAutoCompleteBox
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="select ContactName from [Customers]"></
asp:SqlDataSource
>
Hope this helps,
Shinu.
Thanks for your interested to help me. But your code seems like my code only thing is "SqlDataSource" only changed. So you trying
to say my SqlDataSource is incorrect. But I can getting data from that. It's working fine. But what I need is, If I'm go through the filtered items with "UP" and "Down" keys on one of item I'm hitting "TAB" OR "ENTER" Key it's not selecting that particular item in RadAutoCompleteBox. I used the below javascript code its selecting the Top item on field when i hit Tab/Enter. But I want exactly on which item I'm hitting Tab/Enter should select.
Select Top Item On Field Enter / Tab
<script type="text/javascript">
var
originalHandler = Telerik.Web.UI.RadAutoCompleteBox.prototype._onBlur;
Telerik.Web.UI.RadAutoCompleteBox.prototype._onBlur =
function
(e) {
if
(!
this
._dropDown._shouldBlurAutoComplete) {
return
;
}
var
item =
this
._dropDown.getItem(0);
if
(item) {
this
.get_inputElement().value =
""
;
this
._addEntryFromItem(item);
}
originalHandler.apply(
this
, [e]);
}
</script>
I'm facing your same problem about firing textchanged event after pressing ENTER key, so did you found any solution?
Would you please elaborate a little bit the scenario you are trying to achieve and why to you need the client text changed event so we could inspect the scenario and be more helpful.
Please share the exact mark up of the control that you are using so we could inspect it too.
Regards,
Plamen
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
Thanks for replaying to my post....
I'm using RadAutoCompleteBox inside RadGrid, when user hits TAB key it's okay, but i need to include ENTER key too.
I tried to make some js scripts but i didn't work out, any way below you'll find my control:
<
telerik:GridTemplateColumn
HeaderText
=
"اسم المادة"
UniqueName
=
"ArName"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-HorizontalAlign
=
"Center"
FooterStyle-HorizontalAlign
=
"Center"
><
br
> <
ItemTemplate
><
br
> <
telerik:RadAutoCompleteBox
ID
=
"MatterName_Txt"
runat
=
"server"
DataSourceID
=
"Matter_DS"
DataTextField
=
"ArName"
DataValueField
=
"ID"
InputType
=
"Text"
Width
=
"300px"
TokensSettings-AllowTokenEditing
=
"false"
AutoPostBack
=
"true"
TextSettings-SelectionMode
=
"Single"
EnableClientFiltering
=
"true"
DropDownWidth
=
"280px"
><
br
> </
telerik:RadAutoCompleteBox
><
br
> </
ItemTemplate
><
br
> </
telerik:GridTemplateColumn
>
<script type=
"text/javascript"
><br>
var
handler = Telerik.Web.UI.RadAutoCompleteBox.prototype._onKeyDown;<br> Telerik.Web.UI.RadAutoCompleteBox.prototype._onKeyDown =
function
(e) {<br> handler.apply(
this
, [e]);<br>
if
(e.keyCode == Sys.UI.Key.enter) {<br>
this
._onBlur();<br> }<br> }<br> </script>
Unfortunately at the moment the control does not support such functionality on Enter key down so in your case I would recommend you to override the default KeyDown function and add a trigger function for the textchanged event as in the code below so you don't loos from the current implemented functionality:
<script type=
"text/javascript"
>
function
OnClientTextChanged(sender, args) {
console.log(
"OnClientTextChanged -"
+args.get_text());
}
Telerik.Web.UI.RadAutoCompleteBox.prototype._onKeyDown =
function
(e) {
var
that =
this
,
dropDown =
this
._dropDown,
activeItem,
appendEntryCallback =
function
(that, isScrollingDown) {
that._appendEntryText(activeItem.get_text(),
false
);
activeItem.ensureVisible(isScrollingDown);
that._dropDown.position(that._getDropDownPositionInfo());
};
if
(e.keyCode != Sys.UI.Key.backspace &&
this
._selectedToken) {
this
._clearTokenSelection();
}
setTimeout(
function
() { that._updateInputSize(); }, 1);
switch
(e.keyCode) {
case
Sys.UI.Key.up:
{
e.preventDefault();
dropDown.highlightPrev();
activeItem = dropDown.get_activeItem();
if
(activeItem) {
appendEntryCallback(
this
,
false
);
}
}
break
;
case
Sys.UI.Key.down:
{
e.preventDefault();
dropDown.highlightNext();
activeItem = dropDown.get_activeItem();
if
(activeItem) {
appendEntryCallback(
this
,
true
);
}
}
break
;
case
Sys.UI.Key.enter:
{
var
item =
this
._dropDown.select(),
input =
this
.get_inputElement(),
entry;
e.preventDefault();
if
(item) {
this
._addEntryFromItem(item);
}
else
{
var
newText =
this
.get_searchString();
if
(newText.length == 0) {
return
;
}
if
(
this
.get_allowCustomEntry() && !
this
._isInSingleSelectionMode()) {
if
(
this
._isInTokenMode()) {
entry =
this
.createEntry(newText);
this
._addEntry(entry);
}
else
{
var
endsWidthDelimiter =
false
,
delimiter =
this
.get_delimiter(),
text =
this
.get_text();
if
(
this
._getIsDoubleSymbolDelimiter()) {
endsWidthDelimiter =
this
._endsWith(text, delimiter.charAt(0)) ||
this
._endsWith(text, delimiter.charAt(1));
if
(!endsWidthDelimiter) {
input.value += delimiter.charAt(0) +
" "
;
}
}
else
{
input.value += delimiter;
}
}
}
}
this
._updateInputSize();
this
.clear();
this
._onTextChanged(input.value);
}
break
;
case
Sys.UI.Key.backspace:
{
var
text =
this
.get_inputElement().value,
textLength = text.length;
if
(textLength == 0) {
if
(
this
._selectedToken) {
entryToRemove = $(
this
._selectedToken).data()[
"entry"
];
this
._removeEntry(entryToRemove);
this
._selectedToken =
null
;
}
else
if
(
this
._isInTokenMode() || !
this
.get_allowCustomEntry()) {
var
tokenClassName =
this
._isInTokenMode() ?
".racToken"
:
".racTextToken"
,
tokenSelectedClassName =
"racTokenSelected"
,
$lastToken = $(
this
.get_element()).find(tokenClassName).last();
$lastToken.addClass(tokenSelectedClassName);
this
._selectedToken = $lastToken.get(0);
}
}
}
break
;
}
}
</script>
Hope this will help you solve the issue.
Regards,
Plamen
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.