1

Ajax Autocomplete を使用して学生の名前を検索し、学生 ID を返しています。私の更新パネルは次のようになります。

<asp:UpdatePanel ID="StudentSearchUpdatePanel" runat="server">
    <ContentTemplate>
        <dl>
            <dt>Enter student ID:</dt>
            <dd>
                <asp:TextBox ID="StudentIDTextBox" runat="server" Wrap="False" MaxLength="6"></asp:TextBox>
                <asp:Button ID="SelectStudentIDButton" runat="server" Text="Select" OnClick="SelectStudentIDButton_Click"  />
                <asp:Label ID="StudentIDEntryError" runat="server" Visible="false" Font-Bold="True" ForeColor="Red" Text="Please enter a 6-digit student ID number."></asp:Label>
            </dd>
            <dt>Or, begin typing student last name:</dt>
            <dd><asp:TextBox ID="StudentNameSearchTextBox" runat="server"></asp:TextBox></dd>
        </dl>


        <ajaxToolkit:AutoCompleteExtender ID="StudentNameSearchTextBox_AutoCompleteExtender" runat="server"
            TargetControlID="StudentNameSearchTextBox" 
            ServiceMethod="GetStudents"
            OnClientPopulated="getStudents_Populated_Json"
            OnClientItemSelected="selected_Student" 
            MinimumPrefixLength="2" 
            CompletionSetCount="20" 
            UseContextKey="True" >
        </ajaxToolkit:AutoCompleteExtender>
    </ContentTemplate>
</asp:UpdatePanel>

GetStudents_Populated_Json は次のようになります。

    function getStudents_Populated_Json(sender, e) {
        var students = sender.get_completionList().childNodes;
        for (var i = 0; i < students.length; i++) {
        var student = eval('(' + students[i]._value + ')');
         students[i].innerHTML = student.LastName + ' ' + student.FirstName;
      }

最後に、selected_student:

 function selected_Student(sender, e) {    
      var selectedStudent = eval("(" + e._value + ")");  
 }

selected_student で、UpdatePanel (StudentSearchUpdatePanel) の ID を見つけたいので、「StudentIDTextBox」を見つけて、selectedStudent.ID を StudentIDTextBox.innerHTML に配置します。StudentIDTextBox を特定し、selected_Student から innerHTML に設定するにはどうすればよいですか?

(学生クラスは ID、FirstName、LastName です。selectedStudent.ID が正確な ID を与えることを確認しました)。

ありがとう

4

1 に答える 1

0

より簡単な解決策は、最初に必要なテキストボックスの ID を簡単に見つけられるようにすることです。

これを行う 1 つの方法はClientIDMode="Static"asp:TextBox. これにより、コントロールのサーバー名と同じid属性をクライアントに持たせることが強制されます。そうすれば、(JS を使用して) クライアントでこのコントロールを見つけるには、次のようにします。

var myTextbox = document.getElementById('StudentNameSearchTextBox');
myTextbox.value = student.LastName + ' ' + student.FirstName;

それが役立つことを願っています。

于 2012-11-29T22:26:50.287 に答える