2016-09-07 2 views
0

Я использовал telerik autocompletetextbox, чтобы предложить соответствующие слова, которые работают. Но мое требование - начать предлагать, когда введено более 2 символов. Может ли кто-нибудь помочь мне решить эту проблему?как предлагать в autocompletebox после введенных 3 символов?

Код я следовал:

<telerik:RadAutoCompleteBox x:Name="acbCustomerCd" Width="203" Height="30" ItemsSource="{Binding}" DisplayMemberPath="AccountNum" TextSearchPath="AccountNum" AutoCompleteMode="Suggest" TextSearchMode="Contains" Margin="1,0,5,0" BorderBrush="#ffcccccc" SelectionMode="Single" TabIndex="109" KeyboardNavigation.TabNavigation="Local"/> 

В коде позади,

acbCustomerCd.ItemsSource = dtCustomerCd.DefaultView 

ответ

0

Для того, чтобы достичь этого вам придется создать пользовательский класс, производный от класса FilteringBehavior, отменяющие FindMatchingItems и возврат если только строка поиска содержит более 3 символов. После этого вы можете инициализировать новый класс в xaml и назначить его RadAutoCompleteBox.

<Window.Resources> 
    <telerik:CustomFilteringBehavior x:Key="CustomFilteringBehavior" /> 
</Window.Resources> 

...

<telerik:RadAutoCompleteBox ItemsSource="{Binding Items}" DisplayMemberPath="Name" FileringBehavior="{StaticResource CustomFilteringBehavior}" /> 
+0

Спасибо, Пратик Парих. Я попробую это –

0

В версии Ajax этого контроля мы имеем MinFilterLength который добавляет такое поведение, как вы можете видеть в этом ASP.NET AutoCompleteBox DEMO.

Telerik® интерфейс для ASP.NET AJAX выпуска Q3 2013 введены:

  • MinFilterLength - Устанавливает минимальную длину машинописного текста, прежде чем элемент управления инициирует запрос на его DataSource.
0

Я не знаю, что такое telerik, но если вы хотите запустить процесс автозаполнения, вы можете сделать это вот так.

Imports System 
Imports System.Collections.Generic 
Imports System.ComponentModel 
Imports System.Data 
Imports System.Drawing 
Imports System.Linq 
Imports System.Text 
Imports System.Windows.Forms 
Imports System.Data.SqlClient 

Namespace WindowsFormsApplication4 

    Public Class Form1 
     Inherits Form 

     Public Sub New() 
      MyBase.New 
      InitializeComponent 
      Me.initializeFields 
      Me.loadCustomerFromNorthwindDbToDgv1 
     End Sub 

     Private CustomerId As DataGridViewTextBoxColumn 

     Private CompanyName As DataGridViewTextBoxColumn 

     Private Address As DataGridViewTextBoxColumn 

     Private Sub initializeFields() 
      Me.CustomerId = New DataGridViewTextBoxColumn 
      Me.CustomerId.Name = "CustomerID" 
      Me.CustomerId.DataPropertyName = "CustomerID" 
      Me.dataGridView1.Columns.Add(Me.CustomerId) 
      Me.CompanyName = New DataGridViewTextBoxColumn 
      Me.CompanyName.Name = "CompanyName" 
      Me.CompanyName.DataPropertyName = "CompanyName" 
      Me.dataGridView1.Columns.Add(Me.CompanyName) 
      Me.Address = New DataGridViewTextBoxColumn 
      Me.Address.Name = "Address" 
      Me.Address.DataPropertyName = "Address" 
      Me.dataGridView1.Columns.Add(Me.Address) 
     End Sub 

     Private dv As DataView 

     Private Sub loadCustomerFromNorthwindDbToDgv1() 
      Dim conConnect As SqlConnection = New SqlConnection("Data Source = EXCEL-PC; Database = 'Northwind.MDF'; Integrated Security = true") 
      Try 
       Dim dAdapter As SqlDataAdapter = New SqlDataAdapter("SELECT CustomerID, CompanyName, Address FROM Customers ", conConnect) 
       Dim DS As DataSet = New DataSet 
       Dim bs As BindingSource = New BindingSource 
       dAdapter.Fill(DS, "dsCustomer") 
       Me.dataGridView1.AutoGenerateColumns = false 
       Dim dt As DataTable = DS.Tables("dsCustomer") 
       bs.DataSource = DS.Tables("dsCustomer") 
       Me.dv = New DataView(DS.Tables("dsCustomer")) 
       Me.dataGridView1.DataSource = bs 
      Catch ex As Exception 
       MessageBox.Show(ex.ToString) 
      End Try 

     End Sub 

     'will do the search for CompanyName name everytime you type in @ the textbox search 
     Private Sub textBox1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) 
      Me.dv.RowFilter = ("CompanyName like '%' + '" _ 
         + (textBox1.Text + "' + '%' ")) 
      Me.dataGridView1.DataSource = Me.dv 
     End Sub 

     Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) 
      ' TODO: This line of code loads data into the 'northwindDataSet.Customers' table. You can move, or remove it, as needed. 
      Me.customersTableAdapter.Fill(Me.northwindDataSet.Customers) 
     End Sub 
    End Class 
End Namespace 
0

Свойство MinFilterLength можно использовать.

MinFilterLength = "2"