Текстовое поле автозаполнения в многоуровневой архитектуре

Я хочу создать автозаполнение textbox с моей базой данных.

Я программирую свое приложение в многоуровневой архитектуре (модели, DAL, BLL, Presentation).

Я уже сделал метод с arraylist который читает и возвращает мою команду выбора в базе данных, которая заполняет (я проверил на combobox).

Но когда я пытаюсь вставить в textboxничего не происходит... это не показывает предложение.

Я искал что-то на форуме, но я только нашел примеры с одним слоем и, так как я развиваюсь в слоях, я не могу увеличить свойство AutoCompleteStringCollection в моем DAL быть заполненным моей командой выбора.

Если у кого-то есть идеи, как решить эту проблему, пожалуйста, объясните мне!

Дополнительная информация: я использую winForm с C# и SQL Server.

2 ответа

Решение

Я думаю, что вы хотите сказать, что "Но когда я пытаюсь вставить в текстовое поле, ничего не происходит... это не показывает sugestion". ну, я не могу просто кодировать все слои здесь, но могу предложить в вашем DAL создать метод, который возвращает List, а затем на странице формы предоставить код, подобный этому

 txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
 txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;
 var autoCompleteCollection = new AutoCompleteStringCollection();
 autoCompleteCollection.AddRange(DAL.GetMethod().ToArray());
 textbox.AutoCompleteCustomSource = autoCompleteCollection;

Спасибо за помощь!! Я воспользовался вашим предложением и сделал несколько небольших изменений, и он прекрасно работает для меня...

Оказывается, что единственной проблемой был мой список методов, как только я изменил его, список List стал лучше. Кому интересно, вот как я это делаю:

DAL LAYER:

public List<string> LoadList()
{
List<string> tagsList = new List<string>();

using (SqlConnection connection = new SqlConnection(ADados.StringDeConexao))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT column FROM table";

using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
tagsList.Add(reader.GetString(0));
}
reader.Close();
}
connection.Close();
return tagsList;
}

ПРЕЗЕНТАЦИОННЫЙ СЛОЙ (Event TextChanged):

PedidoBLL pedido = new PedidoBLL();

txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection popula = new AutoCompleteStringCollection();
popula.AddRange(pedido.LoadList().ToArray());
txtName.AutoCompleteCustomSource = popula;

В BLL Layer я просто вызываю и возвращаю метод DAL LoadList...

Другие вопросы по тегам