2016-10-30 16 views
0

私のデータベースにオートコンプリートtextboxを作成したいと思います。階層構造のオートコンプリートテキストボックス

私は階層化されたアーキテクチャ(モデル、DAL、BLL、プレゼンテーション)でアプリケーションをプログラミングしています。

私はarraylistのメソッドをすでに作成しています。これは、データベース内でselectコマンドを読み込んで返します(これは、私がcomboboxでテストしました)。

しかし、私がtextboxに挿入しようとすると、何も起こりません...それは示唆を表示しません。

私はフォーラムで何かを探しましたが、1つのレイヤーでサンプルを見つけました。レイヤーで開発しているので、AutoCompleteStringCollectionDALに増やすことはできません。

誰もがこの問題を解決する方法を知っている場合は、私に説明してください!

追加情報:winFormをC#とSQL Serverで使用しています。

答えて

0

「あなたがテキストボックスに挿入しようとすると、何も起こりません... には表示されません。 よく私はちょうどここにすべてのレイヤをコーディングすることはできませんが、あなたのDALに提案することができます一覧を返すメソッドを作成し、フォームページのヘルプのために、この

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

まあ、私はそれを試みますが、 'AutoCompleteCollection.AddRange()'でエラーと呼ばれています。それはモデルを文字列に変換できません。 – GBs

+0

TあなたのDALからリストを返して、あなたのフォームでそれを呼び出す、私が述べたように、autoCompleteCollection.AddRange(DAL.GetMethod()。ToArray()); DAL.GetMethod()はリストを返します。 – James

0

おかげのようなコードを提供します! 私はあなたの提案を使用していくつかの小さな変更を加えて、それは私にはうまく動作していた...

が、私はそれが物事が得一覧< 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):BLL層に

PedidoBLL pedido = new PedidoBLL(); 

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

私はちょうど呼び出しとリターンDALメソッドLoadList ...

関連する問題