Текстовое поле автозаполнения в многоуровневой архитектуре
Я хочу создать автозаполнение 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...