0

Aspx code:

<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>`

VB Code:

<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`

Error: I am getting null value of ContextKey and even Alertbox is not appeared.

4

1 回答 1

0

您应该使用findAutoCompleteExtender BehaviorID,而不是IDBehaviorID扩展返回的 DOM 元素的功能,即提供set_contextKey功能)。您还缺少功能$前面的a 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到更改TxtSyllabus,而不是txtSem.

于 2013-10-30T18:27:30.080 回答