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 > บทความจากสมาชิก > Windows Form กับ ListView แสดงข้อมูลบน ListView ในรูปแบบ Table/Grid (VB.Net,C#)



 
Clound SSD Virtual Server

Windows Form กับ ListView แสดงข้อมูลบน ListView ในรูปแบบ Table/Grid (VB.Net,C#)

Windows Form กับ ListView แสดงข้อมูลบน ListView ในรูปแบบ Table/Grid (VB.Net,C#) สำหรับ ListView เป็น Control ตัวหนึ่งที่น่าสนใจมาก ใช้สำหรับการแสดงข้อมูลในรูปแบบของ List และ Item แสดงผลเป็นแบบ Table หรือ Grid สามารถสร้างรูปแบบของการแสดงได้เป็น Column และ Rows และความสามารถอื่นๆ เช่น กำหนดความกวางของ Column, จัดตำแหน่ง ซ้าย,ตรงกลาง,ขวา กำหนดประเภทของ Column เป็น Checkbox, Button , Image รวมถึงการ Select รายการที่รองรับการ Click เลือกแบบ รายการเดียว หรือ มากกว่าหนึ่งรายการ เป็นต้น



Windows Form and ListView


ข้อสังเกตุในการใช้ ListView จะแตกต่างกับ Control ที่เป็นพวก Data Control อื่นๆ คือ จะไม่มีการกำหนด DataSource ให้กับ ListView แต่จะใช้การ Loop รายการข้อมูลแล้ว Add รายการ Item ให้กับ ListView

ตัวอย่างการใช้ ListView แบบง่ายๆ ในรูปแบบต่างๆ

Windows Form ListView

ให้สร้าง Control ชื่อว่า ListView โดยการลากมาวางไว้ที่ Form

Windows Form ListView

เปลี่ยนชื่อใหม่ เพื่อให้ง่ายต่อการเรียกใช้งาน

ในการแสดงข้อมูลบน ListView สามารถเพิ่มรายการ Item ได้จาก Collection ได้เลย

Windows Form ListView

คลิกที่ Collection เพื่อเพิ่ม Control ผ่าน Wizard

Windows Form ListView

รายการ ListViewItem

ทดสอบการทำงาน

Windows Form ListView

ผลลัพธ์ที่ได้ในกรณีที่เพิ่มผ่าน Wizard

แต่ในการใช้งานจริงแล้วรายการข้อมูลต่าง ๆ จะมาจาก Object ต่างๆ ไม่ว่าจะเป็น Array,List หรือข้อมูลที่มาจาก Database ที่อยู่ในรูปแบบ DataSet, DataTable, DataReader ซึ่งในการนำมาใช้งานกับ ListView เราจะต้องทำการ Loop ข้อมูลนั้น ๆ และเพิ่มรายการ ListViewItem ให้กับ ListView








Ex1 : ตัวอย่างการแสดงข้อมูลจาก List<T>

VB.Net
   Public Class EmpProfiles
        Public Property EMP_ID() As String
            Get
                Return m_EMP_ID
            End Get
            Set
                m_EMP_ID = Value
            End Set
        End Property
        Private m_EMP_ID As String
        Public Property EMP_NAME() As String
            Get
                Return m_EMP_NAME
            End Get
            Set
                m_EMP_NAME = Value
            End Set
        End Property
        Private m_EMP_NAME As String
        Public Property EMP_SALARY() As Decimal
            Get
                Return m_EMP_SALARY
            End Get
            Set
                m_EMP_SALARY = Value
            End Set
        End Property
        Private m_EMP_SALARY As Decimal
    End Class

    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        '*** List<T>
        Dim ls = New List(Of EmpProfiles)()
        ls.Add(New EmpProfiles() With {
            .EMP_ID = "E001",
            .EMP_NAME = "Wipa Nukitram",
            .EMP_SALARY = 10000
        })
        ls.Add(New EmpProfiles() With {
            .EMP_ID = "E002",
            .EMP_NAME = "Thitapat Nukitram",
            .EMP_SALARY = 20000
        })
        ls.Add(New EmpProfiles() With {
            .EMP_ID = "E003",
            .EMP_NAME = "Wisarut Nukitram",
            .EMP_SALARY = 30000
        })

        '*** ListView Header
        Me.myListView.Clear()
        myListView.Columns.Clear()
        myListView.HideSelection = False
        myListView.Columns.Add("Emp ID", 50, HorizontalAlignment.Center)
        myListView.Columns.Add("Emp Name", 225, HorizontalAlignment.Left)
        myListView.Columns.Add("Emp Salary", 150, HorizontalAlignment.Right)
        myListView.FullRowSelect = True
        myListView.View = View.Details

        '*** ListView Row
        For Each item In ls
            Dim lvi = New ListViewItem(item.EMP_ID)
            lvi.SubItems.Add(item.EMP_NAME)
            lvi.SubItems.Add(item.EMP_SALARY.ToString())
            Me.myListView.Items.Add(lvi)
        Next

    End Sub
C#
        public class EmpProfiles
        {
            public string EMP_ID { get; set; }
            public string EMP_NAME { get; set; }
            public decimal EMP_SALARY { get; set; }
        }

        private void frmMain_Load(object sender, EventArgs e)
        {

            //*** List<T>
            var ls = new List<EmpProfiles>();
            ls.Add(new EmpProfiles { EMP_ID = "E001", EMP_NAME = "Wipa Nukitram", EMP_SALARY = 10000 });
            ls.Add(new EmpProfiles { EMP_ID = "E002", EMP_NAME = "Thitapat Nukitram", EMP_SALARY = 20000 });
            ls.Add(new EmpProfiles { EMP_ID = "E003", EMP_NAME = "Wisarut Nukitram", EMP_SALARY = 30000 });


            //*** ListView Header
            this.myListView.Clear();
            myListView.Columns.Clear();
            myListView.HideSelection = false;
            myListView.Columns.Add("Emp ID", 50, HorizontalAlignment.Center);
            myListView.Columns.Add("Emp Name", 225, HorizontalAlignment.Left);
            myListView.Columns.Add("Emp Salary", 150, HorizontalAlignment.Right);
            myListView.FullRowSelect = true;
            myListView.View = View.Details;

            //*** ListView Row
            foreach(var item  in ls)
            {
                var lvi = new ListViewItem(item.EMP_ID);
                lvi.SubItems.Add(item.EMP_NAME);
                lvi.SubItems.Add(item.EMP_SALARY.ToString());
                this.myListView.Items.Add(lvi);
            }
           
        }

ทดสอบการทำงาน

Windows Form ListView

ผลลัพธ์ที่ได้


1.1 การเพิ่ม Event สำหรับการการเลือกรายการ

Windows Form ListView

ในกรณีที่ต้องการเพิ่มการ Select ข้อมูลให้เพิ่ม Event ที่มีชื่อว่า SelectedIndexChanged

VB.Net
    Private Sub myListView_SelectedIndexChanged(sender As Object, e As EventArgs) Handles myListView.SelectedIndexChanged
        If Me.myListView.SelectedItems.Count > 0 Then
            Dim selData As String = Me.myListView.SelectedItems(0).Text
            MessageBox.Show(selData)
        End If
    End Sub
C#
        private void myListView_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(this.myListView.SelectedItems.Count > 0)
            {
                String selData = this.myListView.SelectedItems[0].Text;
                MessageBox.Show(selData);
            }
        }

ทดสอบการทำงาน

Windows Form ListView

แสดงรายการบน ListView

Windows Form ListView

และเมื่อมีการคลิกที่ Item จะแสดงข้อมูลใน Column ที่ 1 ออกมาทาง MessageBox








1.2 การเลือกแบบหลายรายการหรือ Multiselect

Windows Form ListView

กำหนด Property ชื่อว่า Multiselect เป็น True

Windows Form ListView

ให้ลบ Event ชื่อว่า SelectedIndexChanged และสร้าง Button สำหรับการคลิกแดงรายการที่ได้เลือกจากหลายๆ รายการ

VB.Net
    Private Sub btnSelect_Click(sender As Object, e As EventArgs) Handles btnSelect.Click
        If Me.myListView.SelectedItems.Count > 0 Then
            For Each item As ListViewItem In Me.myListView.SelectedItems
                Dim selData As String = item.SubItems(0).Text
                MessageBox.Show(selData)
            Next
        End If
    End Sub
C#
        private void btnSelect_Click(object sender, EventArgs e)
        {
            if (this.myListView.SelectedItems.Count > 0)
            {
                foreach (ListViewItem item in this.myListView.SelectedItems)
                {
                    String selData = item.SubItems[0].Text;
                    MessageBox.Show(selData);
                }
            }
        }

ทดสอบการทำงาน

Windows Form ListView

ทดสอบการเลือกหลายๆ รายการ

Windows Form ListView

คลิกที่ Button เพื่ออ่านค่ารายการที่เลือก แสดงรายการที่เลือกบน MessageBox

Windows Form ListView

แสดงรายการที่เลือกบน MessageBox



Ex2 : การอ่านข้อมูลจาก Database เพื่อแสดงผลบน ListView

Windows Form ListView

ในตัวอย่างนี้จะใช้ Database ของ SQL Server ให้สร้าง Table ง่ายๆ ดังรูป

Windows Form ListView

ตัวอย่างข้อมูล โดยในการดึงข้อมูลสามารถใช้ DataReader , DataSet, DataTable หรืออื่นๆ ขึ้นอยู่กับความถนัด

VB.Net
 Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        '*** Connect Database
        Dim strConnString As String = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase;"
        Dim objConn = New SqlConnection(strConnString)
        objConn.Open()

        Dim strSQL As String = "SELECT * FROM mytable"
        Dim objCmd = New SqlCommand(strSQL, objConn)
        Dim dtReader = objCmd.ExecuteReader()

        '*** ListView Header
        Me.myListView.Clear()
        myListView.Columns.Clear()
        myListView.HideSelection = False
        myListView.Columns.Add("Emp ID", 50, HorizontalAlignment.Center)
        myListView.Columns.Add("Emp Name", 225, HorizontalAlignment.Left)
        myListView.Columns.Add("Emp Salary", 150, HorizontalAlignment.Right)
        myListView.FullRowSelect = True
        myListView.View = View.Details

        '*** ListView Row
        While dtReader.Read()
            Dim lvi = New ListViewItem(dtReader("EmpID").ToString())
            lvi.SubItems.Add(dtReader("EmpName").ToString())
            lvi.SubItems.Add(dtReader("EmpSalary").ToString())
            Me.myListView.Items.Add(lvi)
        End While

        '*** Close Database
        dtReader.Close()
        dtReader = Nothing
        objConn.Close()

    End Sub
C#
        private void frmMain_Load(object sender, EventArgs e)
        {

            //*** Connect Database
            string strConnString = "Server=localhostSQL2014;UID=sa;PASSWORD=;database=mydatabase;";
            var objConn = new SqlConnection(strConnString);
            objConn.Open();

            string strSQL = "SELECT * FROM mytable";
            var objCmd = new SqlCommand(strSQL, objConn);
            var dtReader = objCmd.ExecuteReader();

            //*** ListView Header
            this.myListView.Clear();
            myListView.Columns.Clear();
            myListView.HideSelection = false;
            myListView.Columns.Add("Emp ID", 50, HorizontalAlignment.Center);
            myListView.Columns.Add("Emp Name", 225, HorizontalAlignment.Left);
            myListView.Columns.Add("Emp Salary", 150, HorizontalAlignment.Right);
            myListView.FullRowSelect = true;
            myListView.View = View.Details;

            //*** ListView Row
            while(dtReader.Read())
            { 
                var lvi = new ListViewItem(dtReader["EmpID"].ToString());
                lvi.SubItems.Add(dtReader["EmpName"].ToString());
                lvi.SubItems.Add(dtReader["EmpSalary"].ToString());
                this.myListView.Items.Add(lvi);
            }

            //*** Close Database
            dtReader.Close();
            dtReader = null;
            objConn.Close();

        }

ทดสอบการทำงาน

Windows Form ListView

แสดงข้อมูลรายการจาก Table บน ListView



   
Share
Bookmark.   

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