Javascript 带有contextKey的Ajax自动完成扩展程序

Javascript 带有contextKey的Ajax自动完成扩展程序,javascript,asp.net,vb.net,autocompleteextender,Javascript,Asp.net,Vb.net,Autocompleteextender,Aspx代码: <script type ="text/javascript"> function setContextKey() { find('AutoCompExt2').set_contextKey($get("%=TxtSyllabus.ClientID%>").value) alert(("<%=TxtSyllabus.ClientID %>").value) } </script> &

Aspx代码:

<script type ="text/javascript">
    function setContextKey() {
        find('AutoCompExt2').set_contextKey($get("%=TxtSyllabus.ClientID%>").value)
        alert(("<%=TxtSyllabus.ClientID %>").value)
        }
</script>
<asp:TextBox ID = "TxtSem" runat = "server" Width = "200px" onkeyup="setContextKey()"></asp:TextBox>
<asp:AutoCompleteExtender ID = "AutoCompExt2" runat = "server" MinimumPrefixLength="2" CompletionInterval="100" FirstRowSelected = "false"
        TargetControlID= "TxtSem" EnableCaching = "false" CompletionSetCount = "10" ServiceMethod = "SearchSem" UseContextKey= "true" ></asp:AutoCompleteExtender>`

函数setContextKey(){
find('AutoCompExt2')。set_contextKey($get(“%=txtcytallus.ClientID%>”)。value)
警报((“”)。值)
}
`
VB代码:

<System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()> _
Public Shared Function SearchSem(ByVal prefixText As String, ByVal count As Integer, ByVal contextKey As String) As List(Of String)
    Try
        Dim cnn As New SqlConnection
        Dim cmd As New SqlCommand
        Dim ds As New Data.DataSet
        Dim SyllabusName = Mid(contextKey, 1, Len(contextKey) - 4)
        Dim Year = Mid(contextKey, Len(contextKey) - 4, Len(contextKey))


        cnn.ConnectionString = ConfigurationManager.ConnectionStrings("excelconn").ToString()
        cmd.CommandText = "Select Semester From MastLookup where SyllabusName='" & SyllabusName & "' And SyllabusYear='" & Year & "' And Semester=@SearchText + '%'"
        cmd.Parameters.AddWithValue("SearchText", prefixText)
        cmd.CommandType = Data.CommandType.Text
        cmd.Connection = cnn
        cnn.Open()

        Dim Syllabus As List(Of String) = New List(Of String)
        Dim sdr As SqlDataReader = cmd.ExecuteReader
        While sdr.Read
            Syllabus.Add(sdr("Semester").ToString)
        End While
        cnn.Close()
        Return Syllabus
        cnn.Close()
    Catch ex As Exception

    End Try
End Function`
_
公共共享函数SearchSem(ByVal prefixText作为字符串,ByVal count作为整数,ByVal contextKey作为字符串)作为(字符串的)列表
尝试
Dim cnn作为新的SqlConnection
Dim cmd作为新的SqlCommand
Dim ds作为新的Data.DataSet
Dim-typelusname=Mid(上下文键,1,Len(上下文键)-4)
Dim年=年中(上下文键,Len(上下文键)-4,Len(上下文键))
cnn.ConnectionString=ConfigurationManager.ConnectionString(“excelconn”).ToString()
cmd.CommandText=“从MastLookup中选择学期,其中CYCLEALUSNAME='”&CYCLEALUSNAME&'”和CYCLEALUSWEAR='“&Year&'”和EXTERM=@SearchText+'%””
cmd.Parameters.AddWithValue(“SearchText”,prefixText)
cmd.CommandType=Data.CommandType.Text
cmd.Connection=cnn
cnn.Open()
作为列表(字符串)的Dim教学大纲=新列表(字符串)
作为SqlDataReader=cmd.ExecuteReader的Dim sdr
而sdr.Read
教学大纲。添加(sdr(“学期”)。ToString)
结束时
cnn.Close()
返回教学大纲
cnn.Close()
特例
结束尝试
端函数`
错误:
我得到了ContextKey的空值,甚至Alertbox也没有出现。

您应该通过AutoCompleteXtender的
行为ID
,而不是
ID
行为ID
扩展了返回的DOM元素的功能,即提供
设置\u ContextKey
功能)。在
find
函数前面还缺少一个
$

<script type="text/javascript">
    function setContextKey() {
        $find('AutoCompBehavior2').set_contextKey($get("%=TxtSyllabus.ClientID%>").value)
        alert(("<%=TxtSyllabus.ClientID %>").value)
    }
</script>

<asp:TextBox ID="TxtSem" runat="server" Width="200px" onkeyup="setContextKey()"></asp:TextBox>
<asp:AutoCompleteExtender ID="AutoCompExt2" BehaviorID="AutoCompBehavior2" runat="server" MinimumPrefixLength="2" CompletionInterval="100" FirstRowSelected="false"
    TargetControlID="TxtSem" EnableCaching="false" CompletionSetCount="10" ServiceMethod="SearchSem" UseContextKey="true"></asp:AutoCompleteExtender>

函数setContextKey(){
$find('AutoCompBehavior2').set_contextKey($get(“%=txtcytallus.ClientID%>”).value)
警报((“”)。值)
}
另外,您可能想将
setContextKey
绑定到
txtsetallus
的更改,而不是
txtSem