1
我想我的AutoCompleteExtender選擇在代碼後面觸發事件。我之前從javascript代碼中觸發了onClick事件,但在這種情況下,這似乎是額外的步驟。 最終,當用戶從AutoCompleteExtender列表中選擇一個名稱時,我想要獲取與該名稱關聯的ID,調用服務以獲取更多數據,然後添加到頁面上的GridView。我至今...Ajax AutoCompleteExtender觸發C#事件
<ajaxToolkit:AutoCompleteExtender ID="StudentNameSearchTextBox_AutoCompleteExtender" runat="server"
TargetControlID="StudentNameSearchTextBox"
ServicePath="~/Scripts/AutoComplete.asmx"
ServiceMethod="GetStudents"
OnClientItemSelected="onStudentSelected"
MinimumPrefixLength="2"
CompletionSetCount="30"
UseContextKey="True"
CompletionListCssClass="autocomplete_completionListElement"
CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"
CompletionListItemCssClass="autocomplete_listItem" >
</ajaxToolkit:AutoCompleteExtender>
的JavaScript:
<script type="text/javascript">
function onStudentSelected(sender, e) {
var selectedStudent = eval("(" + e._value + ")");
alert(selectedStudent); //this alerts what I expect
//how to call the SingleStudentSelected event, and send the selectedStudent
用?
}
</script>
後面的代碼:
protected void SingleStudentSelected(object sender, EventArgs e)
{
///TODO: get data from service and add to grid
}
我能做到這一點直接,或者我需要有一個隱藏的按鈕或文本框火的OnChange事件?我想盡可能以最乾淨的方式完成這個任務。 謝謝。
更新 - 這是目標textbox--
<asp:TextBox ID="StudentNameSearchTextBox" runat="server"
CssClass="StudentNameSearch" OnTextChanged="StudentNameSearchTextBox_TextChanged"
ViewStateMode="Inherit"></asp:TextBox>
已將此添加的JavaScript:
__doPostBack(sender.get_element().name, selectedStudent);
這是事件:
protected void StudentNameSearchTextBox_TextChanged(object sender, EventArgs e)
{
///TODO: get data from service and add to grid
}
所以,我需要隱藏字段來保存selectedStudent(所選項目的VALUE),以便我可以在StudentName中使用它SearchTextBox_TextChanged事件?
有趣的是,我只是看着你的帖子在這裏:http://stackoverflow.com/questions/12838552/detect-autocompleteextender-select-event它是非常接近, - 我會編輯我的問題,以顯示我沒有。 – Jazzy
解決方案,即使用戶在目標文本框中輸入任何文本,不會選擇任何選項,然後向服務器提交表單(例如,單擊任何按鈕),該文章中的建議仍會觸發服務器。 –
在你的情況下,你不僅需要處理目標文本框的文本,而且還需要處理從建議列表中選擇的值。所以在我看來,TextBox的TextChanged事件並不是很好的選擇在這種情況下。 –