2013-09-11 4 views
0

ASPX код:Ajax автозаполнения Extender с contextKey

<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 [email protected] + '%'" 
     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 не появился.

ответ

0

Вы должны быть find ING в AutoCompleteExtender По своему BehaviorID, не ID (BehaviorID расширяет функциональные возможности элемента 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.

+0

Ohk..Thank you Natalie ... – user2768142

Смежные вопросы