comment peut-on réaliser une zone de texte automatique complète dans C# winform? Par exemple, dans mon application, j'ai une zone de texte nommée txtbox_mobileno. je veux lier le numéro de mobile (de la table de base de données nommée client) avec txtbox_mobileno. le client de la table ont plus de 100.000 enregistrements .client veulent la liste de suggestions tout en tapant le numéro de mobile dans l'application.zone de texte de saisie semi-automatique dynamique sur l'événement textchange dans winform avec base de données
donc j'ai essayé de mettre en œuvre le code suivant sur événement TextChanged
if (txtbox_mobileno.TextLength >3)
{
cmd.CommandText = "SELECT TOP 20 MobileNo FROM Customer WHERE MobileNo LIKE'" + txtbox_mobileno.Text+"%'";
SqlDataReader dr;
dr = RunSqlReturnDR(cmd);//return value
if (dr.HasRows)
{
while (dr.Read())
{
C.Add(dr[0].ToString()); //AutoCompleteStringCollection C = new AutoCompleteStringCollection();
}
}
dr.Close();
txtbox_mobileno.AutoCompleteMode = AutoCompleteMode.Suggest;
txtbox_mobileno.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtbox_mobileno.AutoCompleteCustomSource = C;
}
je veux afficher la liste de suggestion que si zone de texte ont plus de 3 lettres quand essayé de lier le cas de charge, il a fallu environ 5 minutes pour lier les données avec la liste de suggestions de la zone de texte,
La durée d'exécution de la requête du serveur SQL était de seulement 3 secondes.
Y at-il un moyen plus rapide de résoudre ce problème?
Les numéros de téléphone mobile dans la base de données changent-ils lorsque cette application est en cours d'exécution ou pouvez-vous considérer que cette liste de numéros est statique pendant le temps que cette zone de texte est affichée à l'écran? Je me demande si vous pourriez saisir les chiffres au lancement de l'application et les classer dans des compartiments en fonction des trois premiers chiffres. Ensuite, tout ce que vous avez à faire est de saisir le seau dans votre événement de texte modifié. – pstrjds