2014-02-27 77 views
0

我是VB.net的新手我想从自动完成的数据库中获取名称列表。我正在尝试关注以下examplevbCode是自动完成不起作用

但我的问题是它不工作,我没有得到任何错误,任何人都可以告诉我我做错了。

我home.aspx

<%@ Page Title="Home Page" Language="VB" CodeFile="~/home.aspx.vb" AutoEventWireup="true" Inherits="_home"%> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 


<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 

</head> 
<body> 
<form id="form1" runat="server"> 
<asp:ToolkitScriptManager ID="ScripManager1" runat="server"/> 

<asp:UpdatePanel ID="autoupdate" runat="server"> 
<ContentTemplate> 


    <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox> 

          <asp:AutoCompleteExtender ID="AutoCompleteExtender2" runat="server" 
        TargetControlID="txtSearch" ServiceMethod="GetList" MinimumPrefixLength="3" 
        UseContextKey="True" > 
      </asp:AutoCompleteExtender> 
</ContentTemplate> 
</asp:UpdatePanel> 



</form> 
</body> 
</html> 

这是我home.aspx.vb

Imports System.Configuration 
Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Threading 
Imports System.Web.Services 

Partial Class _Default 
    Inherits System.Web.UI.Page 

    <WebMethod()> _ 
    Public Shared Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer, ByVal contextKey As String) As String() 
     Try 

      Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("Test").ConnectionString) 
      con.Open() 
      Dim cmd As New SqlCommand("select LoginName from users where LoginName like '@Name' +'%' ", con) 
      cmd.Parameters.AddWithValue("@Name", prefixText) 
      'Dim da As New SqlDataAdapter(cmd) 
      'Dim dt As New DataTable() 
      'da.Fill(dt) 
      'Dim InviteSearchListresult As New List(Of String)() 
      'For i As Integer = 1 To dt.Rows.Count 
      ' InviteSearchListresult.Add(dt.Rows(i)(1).ToString()) 
      ' Next 
      Dim result As New List(Of String)() 
      Dim dr As SqlDataReader = cmd.ExecuteReader() 
      While dr.Read() 
       result.Add(dr("LoginName").ToString()) 
      End While 

      Return (
     From m In result 
     Where m.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) 
     Select m).Take(count).ToArray() 
     Catch ex As Exception 


     End Try 
End Function 
End Class 

请帮助如何解决这个issuse。

+0

你在那里有一个空口袋妖怪模式的try-catch,你是否在上面放置了一个断点来查看在调试过程中是否存在问题(我希望)或者是你想要在代码中留下什么东西(请不要“T)? –

回答

0

您的服务方式是GetList但实际的方法名称是GetCompletionList

尝试获取方法名称来匹配,看看是否是问题所在。你正试图调用一个不存在的方法。

+0

其实我更改了它并更新了我的代码。 – user2787300

+0

它工作?你可以在你的web方法中设置一个断点并实际触发断点吗?如果没有,你的方法仍然没有被调用。 – Tim

+0

不,它不起作用,实际上它正在调用该方法。 – user2787300