【问题标题】:Ajax AutoComplete Extender with contextKey带有 contextKey 的 Ajax 自动完成扩展器
【发布时间】:2013-09-15 07:58:20
【问题描述】:

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

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`

错误: 我得到 ContextKey 的空值,甚至没有出现 Alertbox。

【问题讨论】:

    标签: javascript asp.net vb.net autocompleteextender


    【解决方案1】:

    您应该通过其BehaviorIDfindAutoCompleteExtender,而不是IDBehaviorID 扩展了返回的 DOM 元素的功能,即提供 set_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 绑定到对TxtSyllabus 的更改,而不是txtSem

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 2012-10-07
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      相关资源
      最近更新 更多