0

私のページには、姓に基づいてデータベースを検索するオートコンプリート エクステンダーがあります。なんらかの理由で、1564 の結果を返すはずの "Smith" を検索すると、何も返されませんか? 他の名前を検索すると、「Jones」などで問題なく動作します。「Smith」の行が最も多く、制限か何かがあると思いますか? 何か案は?

 <asp:TextBox ID="DoctorNameTextBox" runat="server" Height="24px" Width="739px" 
            Font-Size="Small"></asp:TextBox>
        <asp:AutoCompleteExtender ID="AutoCompleteExtender" runat="server" 
    DelimiterCharacters="" Enabled="True" ServicePath="AutoComplete.asmx" 
            ServiceMethod="GetCompletionList" TargetControlID="DoctorNameTextBox" 
    MinimumPrefixLength="2" UseContextKey="true" ContextKey="StateDropDown"
            CompletionListElementID="autocompleteDropDownPanel" 
            onclientitemselected="getSelected" CompletionSetCount="20" 
            ShowOnlyCurrentWordInCompletionListItem="True">

Public Function GetCompletionList(prefixText As String, count As Integer, ByVal contextKey As String) As String()
    Try
        Dim Con As SqlConnection
        Dim cmd As SqlCommand
        Con = New SqlConnection
        Dim test As String
        test = contextKey
        Con.ConnectionString = ""
        Con.Open()

        cmd = New SqlCommand
        cmd.Connection = Con
        cmd.CommandText = "SELECT NPI, [Entity Type Code], [Provider Last Name (Legal Name)], [Provider First Name],[Provider First Line Business Mailing Address], [Provider Business Mailing Address City Name], [Provider Business Mailing Address State Name], [Provider Business Mailing Address Postal Code] FROM NPIData WHERE   ([Provider Business Mailing Address State Name] = @State) AND ([Provider Last Name (Legal Name)] LIKE N'%' + @Provider + N'%') ORDER BY [Provider First Name]"
        cmd.Parameters.AddWithValue("@Provider", prefixText)
        cmd.Parameters.AddWithValue("@State", contextKey)
        Dim customers As List(Of String) = New List(Of String)
        Dim reader As SqlDataReader = cmd.ExecuteReader()


        While reader.Read
            customers.Add(reader("Provider Last Name (Legal Name)").ToString + ", " + reader("Provider First Name").ToString + "   " + reader("Provider First Line Business Mailing Address").ToString + "  " + reader("Provider Business Mailing Address City Name").ToString + ", " + reader("Provider Business Mailing Address State Name").ToString + "  " + reader("Provider Business Mailing Address Postal Code").ToString + "  " + reader("NPI").ToString)

        End While


        Con.Close()

        Return customers.ToArray
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

End Function
4

1 に答える 1

2

Web サービスによって返されるリストが jsonSerialization の最大制限である 102400 (文字列の長さ) を超えると、 は警告なしでAutoCompleteExtender失敗します。これを「修正」する方法 (実用的ではありませんが) は、次のように web.config の値を増やすことです。

sectionGroup セクションにこのセクションがあることを確認してください。そうでない場合は、追加します。

<sectionGroup name="system.web.extensions" type="System.Web.Extensions">
    <sectionGroup name="scripting" type="System.Web.Extensions">
         <sectionGroup name="webServices" type="System.Web.Extensions">
                  <section name="jsonSerialization" type="System.Web.Extensions"/>
          </sectionGroup>
    </sectionGroup>
</sectionGroup> 

次に、値を設定します。

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

この他の回答を参照してください。

于 2013-07-31T20:04:35.677 に答える