1

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 イベントで使用できますか?

4

1 に答える 1

0

私の意見では、最もクリーンな方法は、選択した値を HiddenField の値に保存し、非表示のボタンから PostBack を起動し、ボタンのクリック イベント ハンドラーですべてのスタッフを実行することです。

于 2013-04-18T19:52:21.580 に答える