|
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 แบบง่ายๆ ในรูปแบบต่างๆ
ให้สร้าง Control ชื่อว่า ListView โดยการลากมาวางไว้ที่ Form
เปลี่ยนชื่อใหม่ เพื่อให้ง่ายต่อการเรียกใช้งาน
ในการแสดงข้อมูลบน ListView สามารถเพิ่มรายการ Item ได้จาก Collection ได้เลย
คลิกที่ Collection เพื่อเพิ่ม Control ผ่าน Wizard
รายการ ListViewItem
ทดสอบการทำงาน
ผลลัพธ์ที่ได้ในกรณีที่เพิ่มผ่าน 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);
}
}
ทดสอบการทำงาน
ผลลัพธ์ที่ได้
1.1 การเพิ่ม Event สำหรับการการเลือกรายการ
ในกรณีที่ต้องการเพิ่มการ 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);
}
}
ทดสอบการทำงาน
แสดงรายการบน ListView
และเมื่อมีการคลิกที่ Item จะแสดงข้อมูลใน Column ที่ 1 ออกมาทาง MessageBox
1.2 การเลือกแบบหลายรายการหรือ Multiselect
กำหนด Property ชื่อว่า Multiselect เป็น True
ให้ลบ 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);
}
}
}
ทดสอบการทำงาน
ทดสอบการเลือกหลายๆ รายการ
คลิกที่ Button เพื่ออ่านค่ารายการที่เลือก แสดงรายการที่เลือกบน MessageBox
แสดงรายการที่เลือกบน MessageBox
Ex2 : การอ่านข้อมูลจาก Database เพื่อแสดงผลบน ListView
ในตัวอย่างนี้จะใช้ Database ของ SQL Server ให้สร้าง Table ง่ายๆ ดังรูป
ตัวอย่างข้อมูล โดยในการดึงข้อมูลสามารถใช้ 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();
}
ทดสอบการทำงาน
แสดงข้อมูลรายการจาก Table บน ListView
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2017-02-17 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|