2013-03-06 48 views
0

我一直在閱讀的每一個評論說,這段代碼工作.. 但是,當我嘗試鍵入文本到文本框沒有自動完成出現,它只是閃爍..請幫助, ,即時通訊新的WinForms文本框不顯示自動完成,文本框只是閃爍

Private Sub txsCusID_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txsCusID.TextChanged 
    Dim cmd As New SqlClient.SqlCommand("SELECT DISTINCT fname + ' ' + lname AS clist FROM tblclient WHERE id LIKE '%" + txsCusID.Text.ToString + "%'", sqlconstr) 
    Dim ds As New DataSet 
    Dim da As New SqlClient.SqlDataAdapter(cmd) 
    da.Fill(ds, "list") 
    Dim col As New AutoCompleteStringCollection 
    Dim i As Integer 
    For i = 0 To ds.Tables(0).Rows.Count - 1 
     col.Add(ds.Tables(0).Rows(i)("clist").ToString()) 
    Next 
    txsCusID.AutoCompleteSource = AutoCompleteSource.CustomSource 
    txsCusID.AutoCompleteCustomSource = col 
    txsCusID.AutoCompleteMode = AutoCompleteMode.Suggest 
End Sub 
+0

什麼是sqlconstr?如果它是一個實際的字符串,我不認爲它會工作,因爲SqlCommand需要一個實際的SqlConnection對象。如果你嘗試一下代碼,會發生什麼? – pinkfloydx33 2013-03-06 00:26:55

+0

@ pinkfloydx33 sqlconstr是一個sqlclient.sqlconnection。我試圖把col.add後的MsgBox(ds.Tables(0).Rows(i)(「clist」)。ToString())並顯示'name',所以我知道查詢沒有返回null 。 – 2013-03-06 00:47:18

+0

嘗試刪除.ToString()使其成爲'col.Add(ds.Tables(0).Rows(i)(「clist」))'ToString將爲您提供Object.ToString,它通常只是「名稱」正如你所說的 – pinkfloydx33 2013-03-06 01:24:00

回答

0

這裏試試這個......我建議你設置表最多,然後依次通過,同時添加到您的源...

Dim dtCustomerNames As DataTable 
    dtCustomerNames = ds.Tables(0) 


    For Each row As DataRow In dtCustomerNames.Rows 
     'You have to continue to add your data here...' 
     txsCusID.AutoCompleteCustomSource.Add((row.Item("clist").ToString)) 
    Next 

    txsCusID.AutoCompleteMode = AutoCompleteMode.Suggest 
    txsCusID.AutoCompleteSource = AutoCompleteSource.CustomSource 

讓我知道如何它適合你...

謝謝!