ASP.Net ตอนที่ 4 : Add Data (LINQ, Entity Framework) |
ASP.Net ตอนที่ 4 : Add Data (LINQ, Entity Framework) ในตัวอย่างที่ 4 จะเป็นการออกแบบ Web Form สำหรับ Input ข้อมูล และ Add Entity ด้วยการรับค่าที่ Input ไปจัดเก็บลงใน Table ผ่าน Model Entities โดยในตัวอย่างนี้จะสร้าง Web Form ขึ้นมา 2 Form คือ Form แรกใช้แสดงข้อมูลรายการทั้งหมด ส่วน Form ที่สองจะเป็น Form สำหรับการ Input ข้อมูล โดยรับข้อมูลจากการ Input นำไป Insert ลงใน Table ผ่านคำสั่งของ LINQ to Entities
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-01.jpg?v=1001)
Example : การใช้งาน LINQ to Entities เพื่อรับค่าจาก Form แล้ว Insert ข้อมูลลงใน Table
Default.aspx ใช้สำหรับแสดงข้อมูลทั้งหมดบน GridView
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-02.jpg?v=1001)
Add.aspx เป็น Web Form สำหรับ Input และ Insert ข้อมูลใหม่
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-03.jpg?v=1001)
ไฟล์ Default.aspx และ Default.aspx.cs สำหรับแสดงรายการใน GridView
Code Default.aspx (HTML)
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="frmMain" runat="server">
<asp:GridView ID="myGridView" runat="server" AutoGenerateColumns="False" OnRowDataBound="myGridView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Customer ID">
<ItemTemplate>
<asp:Label ID="lblCustomerID" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<asp:Label ID="lblEmail" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Country Code">
<ItemTemplate>
<asp:Label ID="lblCountryCode" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Budget">
<ItemTemplate>
<asp:Label ID="lblBudget" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Used">
<ItemTemplate>
<asp:Label ID="lblUsed" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:Button ID="btnAdd" runat="server" OnClick="btnAdd_Click" Text="Add" />
</form>
</body>
</html>
![](/images/adv.jpg)
Code Default.aspx.cs (C#)
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
BindData();
}
protected 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 GridView
if (ds.Count > 0)
{
this.myGridView.DataSource = ds;
this.myGridView.DataBind();
}
}
}
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && DataBinder.Eval(e.Row.DataItem, "CUSTOMER_ID") != null)
{
//*** CustomerID ***//
Label lblCustomerID = (Label)(e.Row.FindControl("lblCustomerID"));
if (lblCustomerID != null)
{
lblCustomerID.Text = DataBinder.Eval(e.Row.DataItem, "CUSTOMER_ID").ToString();
}
//*** Name ***//
Label lblName = (Label)(e.Row.FindControl("lblName"));
if (lblName != null)
{
lblName.Text = DataBinder.Eval(e.Row.DataItem, "NAME").ToString();
}
//*** Email ***//
Label lblEmail = (Label)(e.Row.FindControl("lblEmail"));
if (lblEmail != null)
{
lblEmail.Text = DataBinder.Eval(e.Row.DataItem, "EMAIL").ToString();
}
//*** CountryCode ***//
Label lblCountryCode = (Label)(e.Row.FindControl("lblCountryCode"));
if (lblCountryCode != null)
{
lblCountryCode.Text = DataBinder.Eval(e.Row.DataItem, "COUNTRY_CODE").ToString();
}
//*** Budget ***//
Label lblBudget = (Label)(e.Row.FindControl("lblBudget"));
if (lblBudget != null)
{
lblBudget.Text = DataBinder.Eval(e.Row.DataItem, "BUDGET").ToString();
}
//*** Used ***//
Label lblUsed = (Label)(e.Row.FindControl("lblUsed"));
if (lblUsed != null)
{
lblUsed.Text = DataBinder.Eval(e.Row.DataItem, "USED").ToString();
}
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
Response.Redirect("Add.aspx");
}
}
ไฟล์ Add.aspx และ Add.aspx.cs สำหรับเพิ่มหรือ Insert ข้อมูล
Code Add.aspx (HTML)
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="frmMain" runat="server">
<div>
<table width="353" border="1">
<tr>
<td width="102">
<asp:Label ID="Label1" runat="server" Text="Customer ID"></asp:Label></td>
<td width="235">
<asp:TextBox ID="txtCustomerID" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="Name"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Email"></asp:Label></td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label4" runat="server" Text="Country Code"></asp:Label></td>
<td>
<asp:TextBox ID="txtCountryCode" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text="Budget"></asp:Label></td>
<td>
<asp:TextBox ID="txtBudget" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label6" runat="server" Text="Used"></asp:Label></td>
<td>
<asp:TextBox ID="txtUsed" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</div>
<p>
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="Save" />
</p>
</form>
</body>
</html>
Code Add.aspx.cs (C#)
public partial class Add : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
this.txtCustomerID.Text = string.Empty;
this.txtName.Text = string.Empty;
this.txtEmail.Text = string.Empty;
this.txtCountryCode.Text = string.Empty;
this.txtBudget.Text = string.Empty;
this.txtUsed.Text = string.Empty;
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
using (var db = new myDatabaseEntities())
{
// Get Param
string strCustomerID = this.txtCustomerID.Text;
string strName = this.txtName.Text;
string strEmail = this.txtEmail.Text;
string strCountryCode = this.txtCountryCode.Text;
decimal strBudget = Convert.ToDecimal(this.txtBudget.Text);
decimal strUsed = Convert.ToDecimal(this.txtUsed.Text);
// Insert data to CUSTOMER
var ds = (from c in db.CUSTOMER
where c.CUSTOMER_ID == strCustomerID
select c).FirstOrDefault();
// Insert
if (ds != null)
{
ClientScript.RegisterStartupScript(this.GetType(), "PopupScript", "<script>alert('" + string.Format("Customer {0} Exists in table.", strCustomerID) + "');</script>");
}
else
{
db.CUSTOMER.Add(new CUSTOMER()
{
CUSTOMER_ID = strCustomerID,
NAME = strName,
EMAIL = strEmail,
COUNTRY_CODE = strCountryCode,
BUDGET = strBudget,
USED = strUsed,
});
db.SaveChanges();
Response.Redirect("Default.aspx");
}
}
}
}
Screenshot
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-04.jpg?v=1001)
แสดงรายการข้อมูลทั้งหมดใน GridViewให้คลิกที่ Add เพื่อทำการเพิ่มข้อมูล
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-05.jpg?v=1001)
แสดง Form ซึ่งเป็น Web Formสำหรับการ Input ข้อมูล ในตัวอย่างนี้จะมีการตรวจสอบข้อมูลเช่น มี Key ซ้ำหรือไม่
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-06.jpg?v=1001)
จะต้องทำการกรอกข้อมูลให้ถูกต้อง
![Add Data Add Data](https://www.thaicreate.com/upload/tutorial/entity-framework-asp-net-add-data-07.jpg?v=1001)
ข้อมูลที่เพิ่มลงใน Table และแสดงผลบน GridView ด้วยการ Bind ข้อมูลใหม่หลังจากที่ได้ Insert เรียบร้อยแล้ว
Code Default.aspx.vb (VB.Net)
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
BindData()
End If
End Sub
Protected 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 GridView
If ds.Count > 0 Then
Me.myGridView.DataSource = ds
Me.myGridView.DataBind()
End If
End Using
End Sub
Protected Sub myGridView_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles myGridView.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow And Not IsNothing(DataBinder.Eval(e.Row.DataItem, "CUSTOMER_ID")) Then
'*** CustomerID ***'
Dim lblCustomerID As Label = DirectCast(e.Row.FindControl("lblCustomerID"), Label)
If Not IsNothing(lblCustomerID) Then
lblCustomerID.Text = DataBinder.Eval(e.Row.DataItem, "CUSTOMER_ID").ToString()
End If
'*** Name ***'
Dim lblName As Label = DirectCast(e.Row.FindControl("lblName"), Label)
If Not IsNothing(lblName) Then
lblName.Text = DataBinder.Eval(e.Row.DataItem, "NAME").ToString()
End If
'*** Email ***'
Dim lblEmail As Label = DirectCast(e.Row.FindControl("lblEmail"), Label)
If Not IsNothing(lblEmail) Then
lblEmail.Text = DataBinder.Eval(e.Row.DataItem, "EMAIL").ToString()
End If
'*** CountryCode ***'
Dim lblCountryCode As Label = DirectCast(e.Row.FindControl("lblCountryCode"), Label)
If Not IsNothing(lblCountryCode) Then
lblCountryCode.Text = DataBinder.Eval(e.Row.DataItem, "COUNTRY_CODE").ToString()
End If
'*** Budget ***'
Dim lblBudget As Label = DirectCast(e.Row.FindControl("lblBudget"), Label)
If Not IsNothing(lblBudget) Then
lblBudget.Text = DataBinder.Eval(e.Row.DataItem, "BUDGET").ToString()
End If
'*** Used ***'
Dim lblUsed As Label = DirectCast(e.Row.FindControl("lblUsed"), Label)
If Not IsNothing(lblUsed) Then
lblUsed.Text = DataBinder.Eval(e.Row.DataItem, "USED").ToString()
End If
End If
End Sub
Protected Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Response.Redirect("Add.aspx")
End Sub
End Class
Code Add.aspx.vb (VB.Net)
Public Class Add
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Me.txtCustomerID.Text = String.Empty
Me.txtName.Text = String.Empty
Me.txtEmail.Text = String.Empty
Me.txtCountryCode.Text = String.Empty
Me.txtBudget.Text = String.Empty
Me.txtUsed.Text = String.Empty
End If
End Sub
Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
Using db = New myDatabaseEntities()
' Get Param
Dim strCustomerID As String = Me.txtCustomerID.Text
Dim strName As String = Me.txtName.Text
Dim strEmail As String = Me.txtEmail.Text
Dim strCountryCode As String = Me.txtCountryCode.Text
Dim strBudget As Decimal = Convert.ToDecimal(Me.txtBudget.Text)
Dim strUsed As Decimal = Convert.ToDecimal(Me.txtUsed.Text)
' Insert data to CUSTOMER
Dim ds = (From c In db.CUSTOMER
Where c.CUSTOMER_ID = strCustomerID
Select c).FirstOrDefault()
' Insert
If ds IsNot Nothing Then
ClientScript.RegisterStartupScript(Me.GetType, "PopupScript", "<script>alert('" + String.Format("Customer {0} Exists in table.", strCustomerID) + "');</script>")
Else
db.CUSTOMER.Add(New CUSTOMER() With { _
.CUSTOMER_ID = strCustomerID, _
.NAME = strName, _
.EMAIL = strEmail, _
.COUNTRY_CODE = strCountryCode, _
.BUDGET = strBudget, _
.USED = strUsed _
})
db.SaveChanges()
Response.Redirect("Default.aspx")
End If
End Using
End Sub
End Class
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
![](/images/resource/startrue.gif) ![](/images/resource/startrue.gif) ![](/images/resource/startrue.gif) |
|
|
Create/Update Date : |
2015-10-02 21:21:40 /
2017-03-15 14:37:10 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|