Windows Form ตอนที่ 5 : Update Data (LINQ, Entity Framework) |
Windows Form ตอนที่ 5 : Update Data (LINQ, Entity Framework) ในตอนที่ 5 จะเป็นตัวอย่างการ Update ข้อมูลบน Windows Form Application ด้วย Entity Framework ยกตัวอย่างง่าย ๆ การสร้าง Form ขึ้นมา 2 Form โดย Form แรกเป็นการแสดงรายการทั้งหมดบน DataGridView ให้เมื่อคลิกทีรายการบน DataGridView จะแสดง Form เป็น Dialog สำหรับการแก้ไขหรือ Update ข้อมูล
Example : การใช้งาน LINQ to Entities เพื่อทำการแสดงข้อมูลบน Form แลังนำค่าที่ได้ไป Update ใน Table
frmMain เป็น Form สำหรับแสดงรายการทั้งหมดบน DataGridView
frmUpdate เป็น Form สำหรับ Update ข้อมูล
Code frmMain.cs (C#)
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
BindData();
}
public void BindData()
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
select new
{
c.CUSTOMER_ID,
c.NAME,
c.EMAIL,
c.COUNTRY_CODE,
c.BUDGET,
c.USED
}).ToList();
// Assign to DataGridView
if (ds.Count > 0)
{
// New DataSource
this.myDataGridView.AutoGenerateColumns = false;
this.myDataGridView.AllowUserToAddRows = false;
this.myDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
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 myDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
string strCustomerID = this.myDataGridView.Rows[e.RowIndex].Cells["CUSTOMER_ID"].Value.ToString();
var form = new frmUpdate();
form._strCustomerID = strCustomerID;
form.ShowDialog();
BindData();
}
}
Code frmUpdate.cs (C#)
public partial class frmUpdate : Form
{
public frmUpdate()
{
InitializeComponent();
}
public string _strCustomerID { get; set; }
private void frmDetail_Load(object sender, EventArgs e)
{
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
where c.CUSTOMER_ID == _strCustomerID
select new
{
c.CUSTOMER_ID,
c.NAME,
c.EMAIL,
c.COUNTRY_CODE,
c.BUDGET,
c.USED
}).FirstOrDefault();
// Display to label
if (ds != null)
{
this.lblCustomerID.Text = ds.CUSTOMER_ID;
this.txtName.Text = ds.NAME;
this.txtEmail.Text = ds.EMAIL;
this.txtCountryCode.Text = ds.COUNTRY_CODE;
this.txtBudget.Text = ds.BUDGET.ToString();
this.txtUsed.Text = ds.USED.ToString();
}
}
}
private void btnSave_Click(object sender, EventArgs e)
{
using (var db = new myDatabaseEntities())
{
// Update data to CUSTOMER
var ds = (from c in db.CUSTOMER
where c.CUSTOMER_ID == _strCustomerID
select c).FirstOrDefault();
// Update
if (ds != null)
{
ds.NAME = this.txtName.Text;
ds.EMAIL = this.txtEmail.Text;
ds.COUNTRY_CODE = this.txtCountryCode.Text;
ds.BUDGET = Convert.ToDecimal(this.txtBudget.Text);
ds.USED = Convert.ToDecimal(this.txtUsed.Text);
}
db.SaveChanges();
}
this.Close();
}
}
Screenshot
แสดงรายการข้อมูลบน DataGridView ให้คลิกรายการที่ต้องการจะ Update หรือแก้ไข
แสดง Dialog หรือ Form สำหรับการแก้ไขข้อมูล ให้แก้ไขข้อมูลที่ต้องการจะ Update
รายการใหม่ที่ได้ Update และมีการ Bind ใน DataGriView ข้อมูลใหม่
Code frmMain.vb (VB.Net)
Public Class frmMain
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BindData()
End Sub
Public Sub BindData()
' Create new entities Object
Using db = New myDatabaseEntities()
' Get data from CUSTOMER
Dim ds = (From c In db.CUSTOMER
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
' New DataSource
Me.myDataGridView.AutoGenerateColumns = False
Me.myDataGridView.AllowUserToAddRows = False
Me.myDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect
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 myDataGridView_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles myDataGridView.CellClick
Dim strCustomerID As String = Me.myDataGridView.Rows(e.RowIndex).Cells("CUSTOMER_ID").Value.ToString()
Dim form = New frmUpdate()
form._strCustomerID = strCustomerID
form.ShowDialog()
BindData()
End Sub
End Class
Code frmUpdate.vb (VB.Net)
Public Class frmUpdate
Public Property _strCustomerID() As String
Get
Return m_strCustomerID
End Get
Set(value As String)
m_strCustomerID = value
End Set
End Property
Private m_strCustomerID As String
Private Sub frmUpdate_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using db = New myDatabaseEntities()
' Get data from CUSTOMER
Dim ds = (From c In db.CUSTOMER
Where c.CUSTOMER_ID = _strCustomerID
Select New With { _
c.CUSTOMER_ID, _
c.NAME, _
c.EMAIL, _
c.COUNTRY_CODE, _
c.BUDGET, _
c.USED _
}).FirstOrDefault()
' Display to label
If Not IsNothing(ds) Then
Me.lblCustomerID.Text = ds.CUSTOMER_ID
Me.txtName.Text = ds.NAME
Me.txtEmail.Text = ds.EMAIL
Me.txtCountryCode.Text = ds.COUNTRY_CODE
Me.txtBudget.Text = ds.BUDGET.ToString()
Me.txtUsed.Text = ds.USED.ToString()
End If
End Using
End Sub
End Class
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2015-10-02 21:20:36 /
2017-03-15 14:39:56 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|