Windows Form ตอนที่ 2 : DataGridView Search Data (LINQ, Entity Framework) |
Windows Form ตอนที่ 2 : DataGridView Search Data (LINQ, Entity Framework) ในตอนที่ 2 ของ DataGridView บน Windows Form Application จะเป็นการใช้ DataGridView แสดงข้อมูลจาก Model Entities ด้วยการใช้ LINQ to Entities ทำการค้นหาข้อมูลจาก Table (ตาราง) แล้วนำค่าที่ได้มาแสดงผลใน DataGridView แบบง่าย ๆ โดยใช้คำสั่งในรูปแบบของ LIKE หรือ Contains ในภาษาของ LINQ สามารถนำตัวอย่างที่ได้ไป Apply ใช้ได้กับหลาย ๆ รูปแบบ
Example : การใช้งาน LINQ to Entities ค้นหา (Search) ข้อมูล Table แล้วแสดงผลบน DataGridView (Windows Form Application)
ออกแบบหน่าจอ Form ประกอบด้วย DataGridView และ TextBox สำหรับรับข้อมูลและ Button ค้นหาข้อมูล
Code frmMain.cs (C#)
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
SearchData();
}
private void SearchData()
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get Param
string strKeyword = this.txtKeyword.Text.Trim();
// Search data from CUSTOMER (By NAME, EMAIL)
var ds = (from c in db.CUSTOMER
where c.NAME.Contains(strKeyword) || c.EMAIL.Contains(strKeyword)
select new
{
c.CUSTOMER_ID,
c.NAME,
c.EMAIL,
c.COUNTRY_CODE,
c.BUDGET,
c.USED
}).ToList();
// Assign to DataGridView
if (ds.Count > 0)
{
this.myDataGridView.AutoGenerateColumns = false;
this.myDataGridView.AllowUserToAddRows = false;
this.myDataGridView.DataSource = ds;
}
// Summary Budget Column
decimal iSumBudget = 0;
foreach (DataGridViewRow row in this.myDataGridView.Rows)
{
iSumBudget = iSumBudget + Convert.ToDecimal(row.Cells["BUDGET"].Value);
}
this.lblTotalBudget.Text = String.Format("Total Budget : {0}", iSumBudget.ToString("#,###.00"));
// Summary Used Column
decimal iSumUsed = 0;
foreach (DataGridViewRow row in this.myDataGridView.Rows)
{
iSumUsed = iSumUsed + Convert.ToDecimal(row.Cells["USED"].Value);
}
this.lblTotalUsed.Text = String.Format("Total Used : {0}", iSumUsed.ToString("#,###.00"));
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
SearchData();
}
}
ในตัวอย่างนี้จะค้นหาจาก Column ของ NAME และ EMAIL ในกรณีที่ต้องการให้ค้นหาจาก Column อื่น ๆ สามารถใช้ OR (||)
Screenshot
แสดงข้อมูลทั้งหมด
แสดงข้อมูลในกรณีที่มีการค้นหา
Code frmMain.vb (VB.Net)
Public Class frmMain
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SearchData()
End Sub
Private Sub SearchData()
' Create new entities Object
Using db = New myDatabaseEntities()
' Get Param
Dim strKeyword As String = Me.txtKeyword.Text.Trim()
' Search data from CUSTOMER (By NAME, EMAIL)
Dim ds = (From c In db.CUSTOMER
Where c.NAME.Contains(strKeyword) Or c.EMAIL.Contains(strKeyword)
Select New With { _
c.CUSTOMER_ID, _
c.NAME, _
c.EMAIL, _
c.COUNTRY_CODE, _
c.BUDGET, _
c.USED _
}).ToList()
' Assign to DataGridView
If ds.Count > 0 Then
Me.myDataGridView.AutoGenerateColumns = False
Me.myDataGridView.AllowUserToAddRows = False
Me.myDataGridView.DataSource = ds
End If
' Summary Budget Column
Dim iSumBudget As Decimal = 0
For Each row As DataGridViewRow In Me.myDataGridView.Rows
iSumBudget = iSumBudget + Convert.ToDecimal(row.Cells("BUDGET").Value)
Next
Me.lblTotalBudget.Text = String.Format("Total Budget : {0}", iSumBudget.ToString("#,###.00"))
' Summary Used Column
Dim iSumUsed As Decimal = 0
For Each row As DataGridViewRow In Me.myDataGridView.Rows
iSumUsed = iSumUsed + Convert.ToDecimal(row.Cells("USED").Value)
Next
Me.lblTotalUsed.Text = String.Format("Total Used : {0}", iSumUsed.ToString("#,###.00"))
End Using
End Sub
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
SearchData()
End Sub
End Class
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2015-10-02 21:19:56 /
2017-03-24 23:01:53 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|