0

我想textbox用我的数据库创建一个自动完成功能。

我在分层架构(模型、DAL、BLL、演示文稿)中编写我的应用程序。

我已经制作了一个方法,该方法arraylist在数据库中读取并返回我的选择命令,该命令正在填充(我已经在combobox)。

但是当我尝试插入时textbox,什么都没有发生......它没有显示建议。

我在论坛中寻找了一些东西,但我只找到了一层的示例,并且由于我正在分层开发,我无法增加我的属性AutoCompleteStringCollectionDAL由我的选择命令填充。

如果有人知道如何解决这个问题,请向我解释!

附加信息:我正在使用winFormC# 和 SQL Server。

4

2 回答 2

0

谢谢您的帮助!!我使用了你的建议并做了一些小改动,对我来说效果很好......

事实证明,唯一的问题是我的方法列表,一旦我改变它做一个List < String >事情变得更好。对于谁想知道,这是我的做法:

DAL层:

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;
}

呈现层(事件 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 层中,我只是调用并返回 DAL 方法 LoadList ...

于 2016-10-31T02:10:01.647 回答
0

我想您想说“但是当我尝试在文本框中插入时,什么都没有发生……它没有显示出建议。” 好吧,我不能只在这里对所有层进行编码,而是可以建议在您的 DAL 中创建一个返回List的方法,然后在您的表单页面上提供这样的代码

 txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
 txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;
 var autoCompleteCollection = new AutoCompleteStringCollection();
 autoCompleteCollection.AddRange(DAL.GetMethod().ToArray());
 textbox.AutoCompleteCustomSource = autoCompleteCollection;
于 2016-10-30T18:20:48.403 回答