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 > บทความจากสมาชิก > C# DataGridView กับ Event และ Method แบบ บ้านๆ



 
Clound SSD Virtual Server

C# DataGridView กับ Event และ Method แบบ บ้านๆ

เนื้อหาวันนี้จะเขียนเรื่องการใช้ Event และ Method ของ DataGridView ที่ผมใช้งานเป็นประจำครับ
เนื้อหาอาจจะไม่มีความรู้วิชาการเลยนะครับ เพราะผมก็ทำไปเรื่อยๆ มันใช้ได้ผมก็พอใจตรงนั้น แล้วเอาไปใช้กับตัวอื่นต่อๆกันไป
มาเริ่มกันเลยนะครับ

1.Event CellEnter/CellClick/CellDoubleClick/CellMouseClick/CellMouseDoubleClick/CellContentClick/CellContentDoubleClick/RowHeaderMouseClick

Event ต่างๆเหล่านี้เกิดขึ้นมาเราคลิกไปที่ DataGridView ตรงส่วนที่ว่ามาครับ
Event เหล่านี้ เราสามารถที่จะเอามากำหนด ID ของ PK ได้ง่ายๆ
เช่น ผมมีตาราง ที่อยู่สาขาอยู่ แล้วผมก็มี ตาราง เบอร์โทร อีเมล์ ชื่อติดต่ออะไรสาระพัด ที่มัน พ่วงกันอยู่ แบบนี้

1

2

ผมก็คิดแบบบ้านๆ ง่ายๆ คือ ผมอยากคลิกที่ตางราง AddressDataGridView แล้วให้ตัวแปร เก็บค่า ID ที่คลิกไว้
พอเราไปแก้ข้อมูลในตาราง เบอร์โทร อีเมล์ ชื่อติดต่อ มันก็จะเอา ID ตัวนั้นแหละไปใช้ ไม่ต้องมาค้น ID ใหม่
โค้ดจะได้ประมานี้ ครับ
Code (C#)
 private void company_AddressDataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dgv = sender as DataGridView;
            if(!string.IsNullOrEmpty(dgv[0, e.RowIndex].Value.ToString()))
            LocID = dgv[0, e.RowIndex].Value;
        }

ตัว Event จะใช้เป็น CellEnter/CellClick/CellDoubleClick/CellMouseClick/CellMouseDoubleClick/CellContentClick/CellContentDoubleClick/RowHeaderMouseClick ได้หมดขึ้นกับความสะดวกครับ
แต่อย่าลืมเช็คก่อนว่ามันมีค่าไม๊โดยใช้ !string.IsNullOrEmpty เพื่อตรวจสอบ ครับ


นอกจากนี้ หากเราทำเป็น Dialog เราก็สามารถใช้งานได้ แบบนี้คือ
ผมทำ frmOrganize_Setting_Section เป็น Dialog ไว้

66

จากนั้นผมก็เขียนอีกตัวมาเป็น หน้าเนื้อหา หรือ list ทั้งหมด พอเรากดเลือกที่ DataGridView ก็ให้มัน shoedialog ขึ้นมา วิธีนี้ ต้องมี ฟอร์ม 2 ตัวด้วยกัน คือ ฟอร์มหลักไว้ดูข้อมูลทั้งหมด กับ ฟอร์มที่ไว้ดู รายละเอียดที่จะเป็น dialog ขึ้นมานั่งเอง
จากตัวอย่าง ผมปิดการแก้ไขใน DataGridView ไว้

33

Code (C#)
 private void company_SectionDataGridView_CellMouseDoubleClick(object sender,  DataGridViewCellMouseEventArgs e)
        {
           // เช็คแถวดูก่อนจาก e.RowIndex >= 0
            if (e.RowIndex >= 0)
                {
                    new frmOrganize_Setting_Section() { ID = (sender as DataGridView)[0, e.RowIndex].Value.ToString() }.ShowDialog();
                   //เมื่อ Dialog ทำงานเสร็จแล้วก็ สั่ง Fill เพื่อ อัพเดท DataGridView
                    this.company_SectionTableAdapter.Fill(this.dATALAB_Company.Company_Section);
                }
        }


11

จากรูปคือผมใช้ Event CellMouseDoubleClick ดังนั้น เมื่อเรา ดัลเบิ้ลคลิกไปที่ Cell มมันก็จะ ShowDialog ขึ้นมา แล้วส่งค่า ID ไปให้ frmOrganize_Setting_Section
โดยที่ frmOrganize_Setting_Section ก็ต้องประกาศค่า ID แบบ public นะครับ ไม่งั้น มันส่งไปไม่ได้

12

ขอพูดในส่วนของ datatset แป๊บนะครับ
ตรง datatset นั้น ผมจะเพิ่ม parameter เพื่อค้นหาด้วย ID ลงไป ครับ
ถ้าสนใจก็สามารถเข้าไปอ่านได้ที่

C# - DataGridView การเพิ่ม Parameter การค้นหาใน Wizard แบบ บ้านๆ
https://www.thaicreate.com/community/csharp-add-query-parameter-in-wizard-ban-ban/view.html

13

ในฟอร์ม frmOrganize_Setting_Section ผมจะมีการเปิด Dialog 2 กรณี คือ ตอน Add data และ ตอนแก้ไข
ดังนั้ง โค้ด สำหรับ Fill เลยมี 2 แบบ คือ

Code (C#)
           if (!string.IsNullOrEmpty(ID))
            {
                this.company_SectionTableAdapter.FillByID(this.dATALAB_Company.Company_Section, ID);
            }
            else
            {
                this.company_SectionTableAdapter.Fill(this.dATALAB_Company.Company_Section);
                this.BS.AddNew();
            }


เมื่อ frmOrganize_Setting_Section รับ ID ไปแล้ว
ให้ตรวจสอบดูก่อนว่า ID มันมีค่าไม๊ ถ้ามีค่า ก็ให้ใช้ FillByID แต่ถ้าไม่มีค่า ให้ใช้ Fill แล้วก็เพิ่ม BS.AddNew เพื่อ Add data
แค่นี้เราก็ได้ ฟอร์มง่ายๆ มาใช้ผ่าน DataGridView แล้วครับ

2.Event CellEndEdit Event นี้จะเกิดขึ้นตอนเราแก้ไขข้อมูลเสร็จ นั่นก้หมายความว่า เราอยากให้ทำอะไร ตอนแก้ข้อมูลเสร็จนั่นเอง
ส่วนตัวมีไว้เพิ่ม ID/ข้องมูล วันที่ ชื่อ คน/คำนวนผล ต่างๆ
ยกตัวอย่าง company_PhoneDataGridView ที่ใช้ดูข้อมูล เบอร์โทรนะครับ มัน อ้าง Location_ID ซึ่งเป็นรหัสสาขาอยู่
จากข้างต้นผมได้บอกไปแล้วว่า ถ้าเรา ใช้ CellEnter ให้มันเก็บ ID ให้ เราจะเอามาใช้ตอนนี้แหละครับ
และผมยังจะให้มัน Add ชื่อ และ วันเวลาที่แก้ไข ให้เป็นปัจจุบันอีกด้วย


โค้ดประมาณนี้ครับ

Code (C#)
 private void company_PhoneDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
           //1. เช็คก่อนว่า Location_ID  มันมีค่าไม๊ 
            if (string.IsNullOrEmpty(company_PhoneDataGridView[1, e.RowIndex].Value.ToString()) && LocID != null)
            {
           //2. ไม่มีค่า ก้เพิ่ม เข้าไป
                company_PhoneDataGridView[1, e.RowIndex].Value = LocID;

            }
           //3.เพิ่ม ชื่อ และ วันเวลาที่แก้ไข ให้เป็นปัจจุบัน
            company_PhoneDataGridView[4, e.RowIndex].Value = _Class.UserLogin.EmployeeName;
            company_PhoneDataGridView[5, e.RowIndex].Value = DateTime.Now;
        }



14


นี่เป็นอีกตัวอย่างคือ เวลากรอกค่า Abs. เสร็จ มันจะคำนวณค่า sensetivity ของเครื่อง AAS ให้ เพิ่ม ID วันเวลาคนลงข้อมูลให้เรียบร้อย

15

ไหนๆก็ไหนๆ มันมีหลายๆตารางที่ใช้ร่วมกันเราก็เขียนโค้ดแบบนี้ครับ

16

แล้วไปเพิ่ม Event แบบนี้

17

แค่นี้เราก็เสร็จให้ได้กับ company_PhoneDataGridView company_PhoneInDataGridView company_FaxDataGridView และ company_EmailDataGridView เลยทีเดียว

วันนี้ก็ฝอยมายาวแล้ว ขอตัวไปทำแล็บก่อนนะครับ

เนื่องจากใช้ความรู้แบบบ้าน ๆ จึงได้โค้ด และ หลักการแบบบ้านๆ มาเขียนบทความแบบบ้านๆ ให้อ่านกันครับ
ผมหวังว่าหลายๆคนจะมองการเขียนโปรแกรม เป็นเรื่องง่ายขึ้นนะครับ







   
Share
Bookmark.   

  By : TOR_CHEMISTRY
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2019-07-01
  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 01
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 อัตราราคา คลิกที่นี่