javascript - 查找包含 AutoCompleteExtender 的 UpdatePanel 的 ID

标签 javascript asp.net ajax json autocomplete

我正在使用 Ajax 自动完成来查找学生姓名并返回学生 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?

(学生类(class)是 ID、FirstName、LastName。我已验证 selectedStudent.ID 提供了准确的 ID)。

谢谢

最佳答案

一个更简单的解决方案是在第一个位置轻松找到所需文本框的 ID。

实现此目的的一种方法是在 asp:TextBox 上使用 ClientIDMode="Static"。这将强制控件在客户端上具有与控件的服务器名称相同的 id 属性。这样,要在客户端(使用 JS)找到此控件,您只需:

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

希望有帮助。

关于javascript - 查找包含 AutoCompleteExtender 的 UpdatePanel 的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635582/

相关文章:

c# - SagePay(支付网关)通知返回在 ASP.Net MVC 应用程序中花费很长时间

javascript - jQuery - $(文档).off()

javascript - 通过 ajax 加载的图像的 JQuery 警报 src。未定义的错误

ios - Phonegap + jQuery 移动 : injecting html files from iOS app's Documents folder with jQuery Mobile

javascript - (Javascript) 从用户取三个整数显示总和、平均值、乘积、最小值和最大值

JavaScript:解析奇数字符串以获取必要的信息(RegEx)

php - 使用 xml 将 javascript 变量发布到服务器

javascript - 从 JS 模块返回对象时出现“未定义”

asp.net - 仅供管理员使用的 Facebook 应用程序。为什么?

asp.net - 在 ASP.NET webforms 的 GridView 中构建超链接 - Eval 不工作