Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > บทความจากสมาชิก > DataGridView / ComboBox (DataGridViewComboBoxColumn) สร้าง DataSource ให้กับ ComboBox (VB.Net , C#)


 

DataGridView / ComboBox (DataGridViewComboBoxColumn) สร้าง DataSource ให้กับ ComboBox (VB.Net , C#)

DataGridView / ComboBox (DataGridViewComboBoxColumn) สร้าง DataSource ให้กับ ComboBox (VB.Net , C#) ในหัวข้อนี้เราจะมาเรียนรู้วิธีการสร้าง ComboBox ใน DataGridView ของ Windows Form Application ซึ่งโดยปกติทั่วไปแล้ว Column/Rows ใน DataGridView เราจะใช้เป็น Textbox ในหัวข้อนี้เราจะมาเรียนรู้วิธีการสร้าง ComboBox ใน DataGridView ของ Windows Form Application ซึ่งโดยปกติทั่วไปแล้ว Column/Rows ใน DataGridView เราจะใช้เป็น Textbox แต่อาจจะมีข้อมูลบางประเภทที่ไม่ใช่แบบ Input แต่จะเป็น Select List หรือเราเรียกว่า ComboBox / DropDownList สำหรับวิธีการสร้างนั้นสามารถใช้วิธีการสร้าง DataSource แบบ Wizard ผ่าน Tools ของ Visual Studio แล้วนำค่า DataSource ไปกำหนดค่าให้กับ ComboBox ได้เลย หรือจะใช้วิธีการสร้าง ComboBox มาเปล่า ๆ แล้วค่อยไป Bind ข้อมูลให้ทีหลังก็ได้ ในตัวอย่างนี้มีทั้ง VB.Net และ C#



DataGridView / ComboBox (DataGridViewComboBoxColumn) and Default Selected


ตอนที่ 1 : DataGridView (Win Form) สร้าง Custom แบบ Column/Header และการ Summary ผลรวม (VB.Net,C#)


DataGridView / ComboBox (DataGridViewComboBoxColumn)

เพิ่ม Column ขึ้นมาใหม่ชื่อว่า Country โดยเลือกเป็นแบบ DataGridViewComboBoxColumn กำหนด Name และ Header text ดังรูป

DataGridView / ComboBox (DataGridViewComboBoxColumn)

ในกรณีที่เรามี DataSource จาก Wizard พวก DataSet สามารถกำหนดค่า DataSource, ValueMember, DisplayMember และ DataPropertyName ได้เลย ซึ่งตัว DataGridView จะทำการ BindData ข้อมูลและ Default Selected ค่าใน ComboBox ให้อัตโนมัติ แต่ในบทความนี้ผมจะมากำหนดค่ามันทีหลัง และเขียน Code เอง

DataGridView / ComboBox (DataGridViewComboBoxColumn)

DataGridViewComboBoxColumn ของคอลัมบ์ Country



Code ของ VB.Net
01.Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
02. 
03.    '*** Master Data Table ***'
04.    ' Create Datable
05.    Dim dtTable As DataTable = New DataTable("myTable")
06.    ' Create Column Header
07.    dtTable.Columns.Add(New DataColumn("ColID", GetType(Integer)))
08.    dtTable.Columns.Add(New DataColumn("ColFullName", GetType(String)))
09.    dtTable.Columns.Add(New DataColumn("ColPoint", GetType(Integer)))
10.    dtTable.Columns.Add(New DataColumn("ColCountryCode", GetType(String)))
11.    ' Add Rows
12.    dtTable.Rows.Add(1, "Weerachai Nukitram", 10, "TH")
13.    dtTable.Rows.Add(2, "Wisarut Nukitram", 20, "US")
14.    dtTable.Rows.Add(3, "Wipa Nukitram", 30, "TH")
15. 
16.    '*** Country Data Table ***'
17.    ' Create Datable
18.    Dim dtCountry As DataTable = New DataTable("myCountry")
19.    dtCountry.Columns.Add(New DataColumn("ColCountryCode", GetType(String)))
20.    dtCountry.Columns.Add(New DataColumn("ColCountryName", GetType(String)))
21.    ' Add Rows
22.    dtCountry.Rows.Add("TH", "Thailand")
23.    dtCountry.Rows.Add("US", "United States")
24. 
25.    ' Bind to DataGridView
26.    Me.myDataGridView.AutoGenerateColumns = False
27.    Me.myDataGridView.AllowUserToAddRows = False
28.    Me.myDataGridView.DataSource = dtTable
29. 
30.    ' Bind ComboBox
31.    Me.COUNTRY.DataPropertyName = "Name"
32.    Me.COUNTRY.DataSource = dtCountry
33.    Me.COUNTRY.ValueMember = "ColCountryCode"
34.    Me.COUNTRY.DisplayMember = "ColCountryName"
35. 
36.    ' Loop defult selected from Datatable
37.    For Each row As DataGridViewRow In Me.myDataGridView.Rows
38.        Dim sel As DataRow = dtTable.Select("ColID = '" & row.Cells("ID").Value & "' ").FirstOrDefault()
39.        If Not (IsNothing(sel)) Then
40.            row.Cells("COUNTRY").Value = sel.Item("ColCountryCode")
41.        End If
42.    Next
43. 
44.    ' Summary Total Point
45.    Dim iTotal As Integer
46.    For Each row As DataGridViewRow In Me.myDataGridView.Rows
47.        iTotal = iTotal + row.Cells("POINT").Value
48.    Next
49.    Me.lblTotalPoint.Text = String.Format("Total Point : {0}", iTotal)
50. 
51.End Sub

Code ของ C#
01.private void Form1_Load(object sender, EventArgs e)
02.{
03.    //*** Master Data Table ***'
04.    // Create Datable
05.    DataTable dtTable = new DataTable("myTable");
06. 
07.    //Create Column Header
08.    dtTable.Columns.Add(new DataColumn("ColID", typeof(int)));
09.    dtTable.Columns.Add(new DataColumn("ColFullName", typeof(string)));
10.    dtTable.Columns.Add(new DataColumn("ColPoint", typeof(int)));
11.    dtTable.Columns.Add(new DataColumn("ColCountryCode", typeof(string)));
12.    // Add Rows
13.    dtTable.Rows.Add(1, "Weerachai Nukitram", 10, "TH");
14.    dtTable.Rows.Add(2, "Wisarut Nukitram", 20, "US");
15.    dtTable.Rows.Add(3, "Wipa Nukitram", 30, "TH");
16. 
17.    //*** Country Data Table ***'
18.    // Create Datable
19.    DataTable dtCountry = new DataTable("myCountry");
20.    dtCountry.Columns.Add(new DataColumn("ColCountryCode", typeof(string)));
21.    dtCountry.Columns.Add(new DataColumn("ColCountryName", typeof(string)));
22.    // Add Rows
23.    dtCountry.Rows.Add("TH", "Thailand");
24.    dtCountry.Rows.Add("US", "United States");
25. 
26.    // Bind to DataGridView
27.    this.myDataGridView.AutoGenerateColumns = false;
28.    this.myDataGridView.AllowUserToAddRows = false;
29.    this.myDataGridView.DataSource = dtTable;
30. 
31.    // Bind ComboBox
32.    this.COUNTRY.DataPropertyName = "Name";
33.    this.COUNTRY.DataSource = dtCountry;
34.    this.COUNTRY.ValueMember = "ColCountryCode";
35.    this.COUNTRY.DisplayMember = "ColCountryName";
36. 
37.    // Loop defult selected from Datatable
38.    foreach (DataGridViewRow row in this.myDataGridView.Rows)
39.    {
40.        DataRow sel = dtTable.Select("ColID = '" + row.Cells["ID"].Value.ToString() + "' ").FirstOrDefault();
41.        if (sel != null)
42.        {
43.            row.Cells["COUNTRY"].Value = sel["ColCountryCode"].ToString();
44.        }
45.    }
46. 
47.    // Summary Total Point
48.    int iTotal = 0;
49.    foreach (DataGridViewRow row in this.myDataGridView.Rows)
50.    {
51.        iTotal = iTotal + Convert.ToInt32(row.Cells["POINT"].Value);
52.    }
53.    this.lblTotalPoint.Text = String.Format("Total Point : {0}", iTotal);
54. 
55.}


คำอธิบาย
1.' Bind ComboBox
2.Me.COUNTRY.DataPropertyName = "Name"
3.Me.COUNTRY.DataSource = dtCountry
4.Me.COUNTRY.ValueMember = "ColCountryCode"
5.Me.COUNTRY.DisplayMember = "ColCountryName"

เป็นการ Bind ข้อมูลของ Country แสดงใน ComboBox โดยอ้างถึงคอลัมบ์ชื่อว่า "COUNTRY"

1.' Loop defult selected from Datatable
2.For Each row As DataGridViewRow In Me.myDataGridView.Rows
3.    Dim sel As DataRow = dtTable.Select("ColID = '" & row.Cells("ID").Value & "' ").FirstOrDefault()
4.    If Not (IsNothing(sel)) Then
5.        row.Cells("COUNTRY").Value = sel.Item("ColCountryCode")
6.    End If
7.Next

เป็นการ Loop ข้อมูลใน DataGridView ของ Column ที่ชื่อว่า ID ซึ่งเป็น Key มีค่าเป็นอะไร แล้วนำ Key ไปค้นหาใน DataTable ว่า Rows นั้น CountryCode มีค่าเป็นอะไร ซึ่งจะนำมาใส่เป็นค่า Default ให้กับ ComboBox

Screenshot

DataGridView / ComboBox (DataGridViewComboBoxColumn)

ผลลัพธ์ที่ได้ ComboBox บน DataGridView


.


   
Hate it
Don't like it
It's ok
Like it
Love it
Share
Bookmark.   

  By : TC Admin
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2015-09-24
  Download : No files
Sponsored Links
ThaiCreate.Com Forum
Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่