 |
|
Win (Windows App) มีปัญหาเกี่ยวกับ combobox ค่ะ มาสามารถดึงข้อมูลจากฐานข้อมูลมาใส่เป็น option มันได้มั้ยคะ มันไม่ยอมขึ้นอ่าค่ะ |
|
 |
|
|
 |
 |
|
Code (VB.NET)
comboBox1.DataSource = DataItem
comboBox1.DisplayMember = "DisplayText"
comboBox1.ValueMember = "ValueText"
|
 |
 |
 |
 |
Date :
2010-12-09 09:44:56 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
dim selectstr as string ="select * from tb_name"
dim cmd as new sqlcommand(selectstr,conn) '<---- conn คือ connectionstring
dim dr as sqldatareader
dr = cmd.excutereader
while dr.read
combobox1.items.add = dr("field_name")
end while
ลองเอาไปปรับใช้กันนะครับ connect ms access
|
 |
 |
 |
 |
Date :
2010-12-09 09:45:30 |
By :
kanchen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Public strSQL As String = "Provider=Microsoft.Jet.OleDb.4.0;Data Source= " & HttpContext.Current.Server.MapPath("~\App_Data\xxx.mdb")
ตัวนี้เป็น ConnectionString ครับ ลองเอาไปแก้ไขดูเพื่อช่วยอะไรได้
|
 |
 |
 |
 |
Date :
2010-12-09 09:49:54 |
By :
zero1150kfc |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

ช่วยดูให้หน่อยค่ะ ว่าต้องแก้ตรงไหน ขอบคุณค่ะ
|
 |
 |
 |
 |
Date :
2010-12-09 10:02:07 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Y_Y ไม่มีใครช่วยแก้เลยอ่า
|
 |
 |
 |
 |
Date :
2010-12-09 10:45:18 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็เขียนให้แล้วนิครับ แค่เปลียน tb_name ให้เป็น table กับ field_name ให้เป็น field ที่ต้องการก้ได้แล้วครับ 
|
 |
 |
 |
 |
Date :
2010-12-09 10:51:00 |
By :
kanchen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันก็ยังไม่ขึ้นอยู่ดีอ่าค่ะ
ทำไม่เป็นจริงๆ แค่ก็ขอบคุณมากนะคะ
|
 |
 |
 |
 |
Date :
2010-12-09 13:40:15 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คราวหลังส่ง Code เป็น ข้อความดิ
มาเป็นภาพมัน Copy ไม่ได้
ทำงานต่อลำบาก
Code นี้
ใส่หลังจาก da.Fill
Code (VB.NET)
bs.DataSource = ds
bs.DataMember = "Bank"
cbCustomer.DataSource = bs
cbCustomer.DisplayMember = "BankName"
|
 |
 |
 |
 |
Date :
2010-12-09 14:51:04 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำได้แล้วค่ะ ขอบคุณทุกท่านมากๆเลยค่ะ
แต่พอ run แล้วมันเป็นแบบนี้อ่า

|
 |
 |
 |
 |
Date :
2010-12-09 15:07:25 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่เคยใช้ VS2010
ทำไม ComboBox cbCustomer ไม่มีลูกศร 3 เหลี่ยมล่ะ ???
Code จะผิดจะถูก มันก็น่ามีนิ
|
 |
 |
 |
 |
Date :
2010-12-09 15:12:15 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วค่ะ ได้แล้ว
พอดีเอาบรรทัดที่มัน bindind ข้อมูล ออกน่ะค่ะ
ได้เลย ได้แบบงงๆ
แต่ก็ขอบคุณมากนะคะ :)
|
 |
 |
 |
 |
Date :
2010-12-09 15:14:34 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋ออออออออออออออออออออออออออออออออออออออ ^ ^
|
 |
 |
 |
 |
Date :
2010-12-09 15:15:41 |
By :
exclusiveM |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
bsBank เป็น DataBinding
z_BankName เป็น ComboBox
ds เป็น DataSet
Code (VB.NET)
Public Class Form4
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'BudgetDataSet1.Bank' table. You can move, or remove it, as needed.
Dim sb As String = "SELECT BankID, BankName"
sb &= vbCrLf & "FROM Bank"
sb &= vbCrLf & "ORDER BY BankName"
Dim stConn As String = "Data Source=.\SQLExpress;Initial Catalog=Test;User ID=sa;Password=xxxxxxx"
Dim sqlCn As New SqlClient.SqlConnection(stConn)
sqlCn.Open()
Dim sqlCmd As New SqlClient.SqlCommand(sb, sqlCn)
Dim da As New SqlClient.SqlDataAdapter(sqlCmd)
da.Fill(Me.ds, "Bank")
Me.bsBank.DataSource = Me.ds
Me.bsBank.DataMember = "Bank"
Me.z_BankName.DataSource = Me.bsBank
Me.z_BankName.DisplayMember = "BankName"
End Sub
End Class
ผลการรันโปรแกรม

|
 |
 |
 |
 |
Date :
2010-12-09 15:23:01 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เกิดเรื่องอีกแล้วค่ะ

พอทำ combobox อันที่สอง อันแรกก็เป็นแบบเนี้ย
Code (VB.NET)
'combobox Customer
Dim sqlCompany As String
sqlCompany = "SELECT * FROM Clients"
da = New OleDbDataAdapter(sqlCompany, Conn)
da.Fill(ds, "Clients")
bs.DataSource = ds
bs.DataMember = "Clients"
cbCustomer.DataSource = bs
cbCustomer.DisplayMember = "CompanyName"
cbCustomer.BeginUpdate()
cbCustomer.ValueMember = "CompanyID"
cbCustomer.EndUpdate()
'cbCustomer.DataBindings.Add("Text", bs, "CompanyName")
'combobox Agent
Dim sqlAgent As String
sqlAgent = "SELECT * FROM Agent"
da = New OleDbDataAdapter(sqlAgent, Conn)
da.Fill(ds, "Agent")
bs.DataSource = ds
bs.DataMember = "Agent"
cbAgent.DataSource = bs
cbAgent.DisplayMember = "Agent_name"
'cbAgent.DataBindings.Add("Text", bs, "Agent_name")
'cbCustomer.DataBindings.Add("Text", bs, "CompanyName")
With cbAgent
.BeginUpdate()
.ValueMember = "Agent_ID"
.EndUpdate()
End With
เขียนผิดตรงไหนอ่าคะ
|
 |
 |
 |
 |
Date :
2010-12-13 10:33:35 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อย่าใช้ BindingSource ร่วมกันครับ
1 ComboBox ต่อ 1 BindingSource
|
 |
 |
 |
 |
Date :
2010-12-13 10:51:12 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วจะเปลี่ยนยังไงดีอ่าค่ะ (แบบว่านู๋โง่อ่า)
ต้องประกาศตัวแปรใหม่หรอ
|
 |
 |
 |
 |
Date :
2010-12-13 11:03:59 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ vs2010 ค่ะ
ที่หน้าตามันเป็นแบบนี้เพราะว่า ตั้งค่า dropdownstyle ตรง propoties ให้มันเป็นแบบ dropdownlist ค่ะ
ไม่ต้องการให้พิมพ์ข้อมูลลงไปได้ค่ะ แค่เลือกได้อย่างเดียว
** ลองประกาศใหม่แล้วค่ะ ปรากฎว่า อันแรกขึ้นอันที่ 2 ไม่ขึ้น อีกแล้ว
|
 |
 |
 |
 |
Date :
2010-12-13 12:43:01 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอาโค้ดมาให้ดูใหม่หน่อยซิ
|
 |
 |
 |
 |
Date :
2010-12-13 12:53:49 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
'combobox Customer
Dim sqlCompany As String
Dim bs As New BindingSource
sqlCompany = "SELECT * FROM Clients"
da = New OleDbDataAdapter(sqlCompany, Conn)
da.Fill(ds, "Clients")
bs.DataSource = ds
bs.DataMember = "Clients"
With cbCustomer
.DataSource = bs
.DisplayMember = "CompanyName"
.BeginUpdate()
.ValueMember = "CompanyID"
.EndUpdate()
'.DataBindings.Add("Text", bs, "CompanyName")
End With
'combobox Agent
Dim sqlAgent As String
Dim bs1 As BindingSource
sqlAgent = "SELECT * FROM Agent"
da = New OleDbDataAdapter(sqlAgent, Conn)
'bs1.Fill(ds, "Agent")
bs1.DataSource = ds
bs1.DataMember = "Agent"
cbAgent.DisplayMember = "Agent_name"
'cbAgent.DataBindings.Add("Text", bs, "Agent_name")
'cbCustomer.DataBindings.Add("Text", bs1, "CompanyName")
With cbAgent
.DataSource = bs1
.BeginUpdate()
.ValueMember = "Agent_ID"
.EndUpdate()
End With
|
 |
 |
 |
 |
Date :
2010-12-13 12:56:44 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
บรรทัดที่ 22 ควรเป็น
Code (VB.NET)
da.Fill(ds, "Agent")
|
 |
 |
 |
 |
Date :
2010-12-13 12:59:47 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หนักเลยค่ะ แนนลบบรรทัดที่ 22 ออก แล้วใส่ตามที่คุณหางอึ่งบอกมาแล้ว ลองรันดู มันเป็นแบบเนี๊ยค่ะ

|
 |
 |
 |
 |
Date :
2010-12-13 13:28:53 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
cbAgnet ของคุณ กำหนด Display Member ก่อน DataSource
Code (VB.NET)
cbAgent.DisplayMember = "Agent_name"
'cbAgent.DataBindings.Add("Text", bs, "Agent_name")
'cbCustomer.DataBindings.Add("Text", bs1, "CompanyName")
With cbAgent
.DataSource = bs1
.BeginUpdate()
.ValueMember = "Agent_ID"
.EndUpdate()
End With
แต่ cbCustomer กำหนด DataSource ก่อน Display Member
Code (VB.NET)
With cbCustomer
.DataSource = bs
.DisplayMember = "CompanyName"
.BeginUpdate()
.ValueMember = "CompanyID"
.EndUpdate()
'.DataBindings.Add("Text", bs, "CompanyName")
End With
ลองทำอย่าง cbCustomer ซิ
|
 |
 |
 |
 |
Date :
2010-12-13 14:42:49 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองทำดูแล้วค่ะ
ทีนี้เป็นทั้งสองอันเลย ขึ้นแบบ Agent เลยค่ะ
|
 |
 |
 |
 |
Date :
2010-12-13 14:48:44 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ผิดอันรึเปล่าครับ
ให้แก้ของ cbAgent นะครับ
กำหนด DataSource ก่อน DisplayMember นะครับ
มันจะหนักกว่าเดิมได้ไง
|
 |
 |
 |
 |
Date :
2010-12-13 14:52:58 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วก็คำสั่ง
Code (VB.NET)
Dim bs1 As BindingSource
ให้เป็น
Code (VB.NET)
Dim bs1 As New BindingSource
|
 |
 |
 |
 |
Date :
2010-12-13 14:55:06 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วค่ะ แค่คำว่า new ตามคำสั่งข้างบนนิดเดียวเอง
ขอบคุณมากค่ะ
|
 |
 |
 |
 |
Date :
2010-12-13 15:04:10 |
By :
zeenanz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|