2016-10-30 5 views
0

내 데이터베이스에 자동 완성 textbox을 만들고 싶습니다.구조화 된 텍스트 상자 자동 완성

계층화 된 아키텍처 (모델, DAL, BLL, 프레젠테이션)에서 내 응용 프로그램을 프로그래밍하고 있습니다.

이미 데이터베이스에서 선택 명령을 읽고 반환하는 arraylist으로 메소드를 만들었습니다. (필자는 combobox에서 테스트했습니다).

그러나 내가 textbox에 삽입하려고하면 아무 일도 일어나지 않습니다 ... 제안을 표시하지 않습니다.

포럼에서 무언가를 찾았지만 레이어가 하나 인 예제를 찾았습니다. 속성을 증가시킬 수 없기 때문에 AutoCompleteStringCollection을 내 DAL에서 선택 명령으로 채 웁니다.

누구든지이 문제를 해결하는 방법을 알고 있다면 제게 설명해주십시오!

추가 정보 : winForm을 C# 및 SQL Server에 사용하고 있습니다.

답변

0

"나는 텍스트 상자에 삽입하려고하면 아무 일도 일어나지 않는다고 생각합니다. 에 sugestion을 표시합니다." 잘 난 그냥 여기에 모든 레이어를 코딩 할 수 있지만 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

덕분에 같은 코드를 제공합니다! 나는 당신의 제안을 사용하고 일부 약간의 변경을했다 그리고

내가 그것을 < 문자열> 일이있어 목록을 변경하면 유일한 문제는, 내 방법 목록이라고 밝혀 ... 나에게 잘 작동 보다 나은. 누가 여기 궁금해 것은 내가 어떻게 :

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 ...