AutoCompleteExtender を選択して、コード ビハインドでイベントを発生させたいと考えています。以前に JavaScript コードから onClick イベントを発生させたことがありますが、この場合は余分な手順のようです。最終的に、ユーザーが AutoCompleteExtender リストから名前を選択すると、その名前に関連付けられた ID を取得し、サービスを呼び出してさらにデータを取得し、ページの GridView に追加します。私がこれまでに持っているもの...
<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>
ジャバスクリプト:
<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 イベントを発生させるために非表示のボタンまたはテキスト ボックスが必要ですか? これを可能な限りクリーンな方法で実現したいと思います。ありがとう。
更新-これはターゲットテキストボックスです--
<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 (選択したアイテムの値) を保持する隠しフィールドが必要なので、StudentNameSearchTextBox_TextChanged イベントで使用できますか?