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,037

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



 
Clound SSD Virtual Server

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
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        '*** Master Data Table ***'
        ' Create Datable
        Dim dtTable As DataTable = New DataTable("myTable")
        ' Create Column Header
        dtTable.Columns.Add(New DataColumn("ColID", GetType(Integer)))
        dtTable.Columns.Add(New DataColumn("ColFullName", GetType(String)))
        dtTable.Columns.Add(New DataColumn("ColPoint", GetType(Integer)))
        dtTable.Columns.Add(New DataColumn("ColCountryCode", GetType(String)))
        ' Add Rows
        dtTable.Rows.Add(1, "Weerachai Nukitram", 10, "TH")
        dtTable.Rows.Add(2, "Wisarut Nukitram", 20, "US")
        dtTable.Rows.Add(3, "Wipa Nukitram", 30, "TH")

        '*** Country Data Table ***'
        ' Create Datable
        Dim dtCountry As DataTable = New DataTable("myCountry")
        dtCountry.Columns.Add(New DataColumn("ColCountryCode", GetType(String)))
        dtCountry.Columns.Add(New DataColumn("ColCountryName", GetType(String)))
        ' Add Rows
        dtCountry.Rows.Add("TH", "Thailand")
        dtCountry.Rows.Add("US", "United States")

        ' Bind to DataGridView
        Me.myDataGridView.AutoGenerateColumns = False
        Me.myDataGridView.AllowUserToAddRows = False
        Me.myDataGridView.DataSource = dtTable

        ' Bind ComboBox
        Me.COUNTRY.DataPropertyName = "Name"
        Me.COUNTRY.DataSource = dtCountry
        Me.COUNTRY.ValueMember = "ColCountryCode"
        Me.COUNTRY.DisplayMember = "ColCountryName"

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

        ' Summary Total Point
        Dim iTotal As Integer
        For Each row As DataGridViewRow In Me.myDataGridView.Rows
            iTotal = iTotal + row.Cells("POINT").Value
        Next
        Me.lblTotalPoint.Text = String.Format("Total Point : {0}", iTotal)

    End Sub

Code ของ C#
        private void Form1_Load(object sender, EventArgs e)
        {
            //*** Master Data Table ***'
            // Create Datable
            DataTable dtTable = new DataTable("myTable");

            //Create Column Header
            dtTable.Columns.Add(new DataColumn("ColID", typeof(int)));
            dtTable.Columns.Add(new DataColumn("ColFullName", typeof(string)));
            dtTable.Columns.Add(new DataColumn("ColPoint", typeof(int)));
            dtTable.Columns.Add(new DataColumn("ColCountryCode", typeof(string)));
            // Add Rows
            dtTable.Rows.Add(1, "Weerachai Nukitram", 10, "TH");
            dtTable.Rows.Add(2, "Wisarut Nukitram", 20, "US");
            dtTable.Rows.Add(3, "Wipa Nukitram", 30, "TH");

            //*** Country Data Table ***'
            // Create Datable
            DataTable dtCountry = new DataTable("myCountry");
            dtCountry.Columns.Add(new DataColumn("ColCountryCode", typeof(string)));
            dtCountry.Columns.Add(new DataColumn("ColCountryName", typeof(string)));
            // Add Rows
            dtCountry.Rows.Add("TH", "Thailand");
            dtCountry.Rows.Add("US", "United States");

            // Bind to DataGridView
            this.myDataGridView.AutoGenerateColumns = false;
            this.myDataGridView.AllowUserToAddRows = false;
            this.myDataGridView.DataSource = dtTable;

            // Bind ComboBox
            this.COUNTRY.DataPropertyName = "Name";
            this.COUNTRY.DataSource = dtCountry;
            this.COUNTRY.ValueMember = "ColCountryCode";
            this.COUNTRY.DisplayMember = "ColCountryName";

            // Loop defult selected from Datatable
            foreach (DataGridViewRow row in this.myDataGridView.Rows)
            {
                DataRow sel = dtTable.Select("ColID = '" + row.Cells["ID"].Value.ToString() + "' ").FirstOrDefault();
                if (sel != null)
                {
                    row.Cells["COUNTRY"].Value = sel["ColCountryCode"].ToString();
                }
            }

            // Summary Total Point
            int iTotal = 0;
            foreach (DataGridViewRow row in this.myDataGridView.Rows)
            {
                iTotal = iTotal + Convert.ToInt32(row.Cells["POINT"].Value);
            }
            this.lblTotalPoint.Text = String.Format("Total Point : {0}", iTotal);

        }


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

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

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

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

Screenshot

DataGridView / ComboBox (DataGridViewComboBoxColumn)

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







.


   
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
   







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