Javascript 带有contextKey的Ajax自动完成扩展程序
Aspx代码: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> &
<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