使用objectdatasource结合数据绑定控件进行简单三层架构的开发
生活随笔
收集整理的這篇文章主要介紹了
使用objectdatasource结合数据绑定控件进行简单三层架构的开发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于B/S架構的三層架構的開發,可能很多的人都已經了解的是比較清楚的。哪么我在這里用的是最簡單的三層架構。ui+bll+dal+dbsqlhelp+model.
從05出來以后由于功能明顯比03夸張了很多,所以在開發的時候也就很方便。其中以數據的顯示最為明顯。通過sqldatasource可以幾乎一行代碼都不需要寫,就能在GridView中顯示出來數據,并且進行增刪查改的操作,但是我個人總感覺這樣做是有問題的。因為使用sqldatasource,就明顯的破壞了3層架構的基本改變。哪么微軟在05當中,很重點的推出了objectdatasource這個東西,就是專門用來結合三層架構開發的一個數據源綁定控件。?在層次之間傳遞的也是object,這樣相對來說就比較好一些。
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
using?System.Data.SqlClient;
namespace?DbSqlHelp
{
????public?abstract?class?DbSqlHelp
????{
????????static?string?StrConn?=?@"User?ID=sa;Password=perishryu;Initial?Catalog=pubs;Data?Source=OATHRYUSQL2005";
????????static?SqlDataAdapter?da;
????????static?SqlCommand?cmd;
????????static?SqlConnection?conn;
????????static?DataSet?ds;
????????public?static??DataSet?Search(string?sql)
????????{
????????????using?(da?=?new?SqlDataAdapter(sql,?StrConn))
????????????{
????????????????using?(ds?=?new?DataSet())
????????????????{
????????????????????da.Fill(ds);
????????????????????return?ds;
????????????????}
????????????}
????????}
????????public?static?bool?Make(string?sql)
????????{
????????????using?(conn?=?new?SqlConnection(StrConn))
????????????{
????????????????using?(cmd?=?new?SqlCommand(sql,?conn))
????????????????{
????????????????????if?(conn.State?!=?ConnectionState.Closed)
????????????????????{
????????????????????????conn.Close();
????????????????????}
????????????????????try
????????????????????{
????????????????????????conn.Open();
????????????????????????cmd.ExecuteNonQuery();
????????????????????????return?false;
????????????????????}
????????????????????catch(System.Exception?ex)
????????????????????{
????????????????????????throw?ex;
????????????????????}
????????????????????finally
????????????????????{
????????????????????????conn.Close();
????????????????????}
????????????????}
????????????}
????????}
????}
}
Model
using?System;
using?System.Collections.Generic;
using?System.Text;
namespace?Model
{
????public?class?Job_Model
????{
????????public?Job_Model()
????????{
????????}
????????public?Job_Model(int?id,?string?desc,?int?min,?int?max)
????????{
????????????this.job_desc?=?desc;
????????????this.job_id?=?id;
????????????this.min_lvl?=?min;
????????????this.max_lvl?=?max;
????????}
????????int?job_id;
????????public?int?Job_id
????????{
????????????get?{?return?job_id;?}
????????????set?{?job_id?=?value;?}
????????}
????????string?job_desc;
????????public?string?Job_desc
????????{
????????????get?{?return?job_desc;?}
????????????set?{?job_desc?=?value;?}
????????}
????????int?min_lvl;
????????public?int?Min_lvl
????????{
????????????get?{?return?min_lvl;?}
????????????set?{?min_lvl?=?value;?}
????????}
????????int?max_lvl;
????????public?int?Max_lvl
????????{
????????????get?{?return?max_lvl;?}
????????????set?{?max_lvl?=?value;?}
????????}
????}
} DAL
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
namespace?DAL
{
????public?class?Job_DAL
????{
????????string?sql;
????????public?DataSet?Select_Job_Dal(string?jobid)
????????{
????????????sql?=?"select?*?from?jobs?where?job_id='"?+jobid?+?"'";
????????????return?DbSqlHelp.DbSqlHelp.Search(sql);
????????}
????????public?DataSet?Select_Job_Dal()
????????{
????????????sql?=?"select?*?from?jobs";
????????????return?DbSqlHelp.DbSqlHelp.Search(sql);
????????}
????????public?bool?Update_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?=?"update?jobs?set?job_desc='"?+?job.Job_desc?+?"',min_lvl='"?+?job.Min_lvl?+?"',max_lvl='"?+?job.Max_lvl?+?"'?where?job_id='"?+?job.Job_id?+?"'";
????????????try
????????????{
????????????????return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????catch(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????????public?bool?Insert_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?=?"insert?into?jobs?values('"?+?job.Job_desc?+?"','"?+?job.Min_lvl?+?"','"?+?job.Max_lvl?+?"')";
????????????try
????????????{
????????????????return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????catch?(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????????
????????}
????????public?bool?Delete_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?=?"delete?from?jobs?where?job_id='"?+?job.Job_id?+?"'";
????????????try
????????????{
????????????????return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????catch?(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????????
????????}
????}
}
BLL
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
namespace?BLL
{
????public?class?Job_BLL
????{
????????DAL.Job_DAL?jobdal;
????????public?DataSet?Select_BLL()
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????{
????????????????return?jobdal.Select_Job_Dal();
????????????}
????????}
????????public?DataSet?Select_BLL(string?jobid)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????{
????????????????return?jobdal.Select_Job_Dal(jobid);
????????????}
????????}
????????public?bool?Update_BLL(Model.Job_Model?job)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????try
????????????{
????????????????return?jobdal.Update_Job_Dal(job);
????????????}
????????????catch?(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????????public?bool?Insert_BLL(Model.Job_Model?job)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????try
????????????{
????????????????return?jobdal.Insert_Job_Dal(job);
????????????}
????????????catch(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????????public?bool?Delete_BLL(Model.Job_Model?job)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????try
????????????{
????????????????return?jobdal.Delete_Job_Dal(job);
????????????}
????????????catch(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????}
}
UI?? aspx頁面
<%@?Page?Language="C#"?AutoEventWireup="true"?CodeFile="DataListDemo.aspx.cs"?Inherits="DataListDemo"?%>
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html?xmlns="http://www.w3.org/1999/xhtml"?>
<head?runat="server">
????<title>無標題頁</title>
</head>
<body>
????<form?id="form1"?runat="server">
????<div>
????????<asp:DataList?ID="DataList1"?runat="server"?DataSourceID="ObjectDataSource1"?RepeatColumns="4"?RepeatDirection="Horizontal"?Width="720px"?DataKeyField="job_id"?OnCancelCommand="DataList1_CancelCommand"?OnEditCommand="DataList1_EditCommand"?OnUpdateCommand="DataList1_UpdateCommand"?OnDeleteCommand="DataList1_DeleteCommand">
????????????<ItemTemplate>
????????????????job_id:<asp:Literal?ID="Literal1"?runat="server"?Text='<%#Eval("job_id")?%>'></asp:Literal><br?/>
????????????????job_desc:<asp:Literal?ID="Literal2"?runat="server"?Text='<%#Eval("job_desc")?%>'></asp:Literal><br?/>
????????????????min_lvl:<asp:Literal?ID="Literal3"?runat="server"?Text='<%#Eval("min_lvl")?%>'></asp:Literal><br?/>
????????????????max_lvl:<asp:Literal?ID="Literal4"?runat="server"?Text='<%#Eval("max_lvl")?%>'></asp:Literal><br?/>
????????????????<asp:LinkButton?ID="LinkButton1"?runat="server"?CommandName="Edit">編輯</asp:LinkButton>
????????????????<asp:LinkButton?ID="LinkButton2"?runat="server"?CommandName="delete">刪除</asp:LinkButton>
????????????</ItemTemplate>
????????????<EditItemTemplate>
????????????????job_id:<asp:Literal?ID="Literal1"?runat="server"?Text='<%#Eval("job_id")?%>'></asp:Literal><br?/>
????????????????job_desc:<asp:TextBox?ID="TextBox1"?runat="server"?Text='<%#Bind("job_desc")?%>'></asp:TextBox><br?/>
????????????????min_lvl:<asp:TextBox?ID="TextBox2"?runat="server"?Text='<%#Bind("min_lvl")?%>'></asp:TextBox><br?/>
????????????????max_lvl:<asp:TextBox?ID="TextBox3"?runat="server"?Text='<%#Bind("max_lvl")?%>'></asp:TextBox><br?/>
????????????????<asp:LinkButton?ID="LinkButton3"?runat="server"?CommandName="update">更新</asp:LinkButton>
????????????????<asp:LinkButton?ID="LinkButton4"?runat="server"?CommandName="cancel">取消</asp:LinkButton>
????????????</EditItemTemplate>
???????????
????????</asp:DataList><asp:ObjectDataSource?ID="ObjectDataSource1"?runat="server"?DataObjectTypeName="Model.Job_Model"
????????????DeleteMethod="Delete_BLL"?InsertMethod="Insert_BLL"?SelectMethod="Select_BLL"
????????????TypeName="BLL.Job_BLL"?UpdateMethod="Update_BLL"?OnUpdating="ObjectDataSource1_Updating"?OnDeleting="ObjectDataSource1_Deleting"?OnUpdated="ObjectDataSource1_Updated"></asp:ObjectDataSource>
????????<asp:Label?ID="Label1"?runat="server"?Text="Label"?Width="280px"></asp:Label>
????????
????</div>
????</form>
</body>
</html>
UI?? CS代碼
using?System;
using?System.Data;
using?System.Configuration;
using?System.Collections;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
using?System.Web.UI.HtmlControls;
using?System.ComponentModel;
public?partial?class?DataListDemo?:?System.Web.UI.Page
{
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????}
????protected?void?DataList1_EditCommand(object?source,?DataListCommandEventArgs?e)
????{
????????this.DataList1.EditItemIndex?=?e.Item.ItemIndex;
????????DataBind();
????}
????protected?void?DataList1_CancelCommand(object?source,?DataListCommandEventArgs?e)
????{
????????this.DataList1.EditItemIndex?=?-1;
????????DataBind();
????}
????protected?void?ObjectDataSource1_Updating(object?sender,?ObjectDataSourceMethodEventArgs?e)
????{
????????((Model.Job_Model)(e.InputParameters[0])).Job_id?=?job.Job_id;
????????((Model.Job_Model)(e.InputParameters[0])).Job_desc?=?job.Job_desc;
????????((Model.Job_Model)(e.InputParameters[0])).Min_lvl?=?job.Min_lvl;
????????((Model.Job_Model)(e.InputParameters[0])).Max_lvl?=?job.Max_lvl;
????????this.DataList1.EditItemIndex?=?-1;
????????DataBind();
????}
????Model.Job_Model?job;
????protected?void?DataList1_UpdateCommand(object?source,?DataListCommandEventArgs?e)
????{
????????job?=?new?Model.Job_Model();
????????job.Job_id?=?Convert.ToInt32(((Literal)(this.DataList1.Items[e.Item.ItemIndex].FindControl("Literal1"))).Text);
????????job.Job_desc?=?((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1"))).Text;
????????job.Min_lvl?=?Convert.ToInt32(((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox2"))).Text);
????????job.Max_lvl?=?Convert.ToInt32(((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox3"))).Text);
????????ObjectDataSource1.Update();
????}
????protected?void?DataList1_DeleteCommand(object?source,?DataListCommandEventArgs?e)
????{
????????job?=?new?Model.Job_Model();
????????job.Job_id?=?Convert.ToInt32(((Literal)(this.DataList1.Items[e.Item.ItemIndex].FindControl("Literal1"))).Text);
????????ObjectDataSource1.Delete();
????}
????protected?void?ObjectDataSource1_Deleting(object?sender,?ObjectDataSourceMethodEventArgs?e)
????{
????????((Model.Job_Model)(e.InputParameters[0])).Job_id?=?job.Job_id;
????????DataBind();
????}
????protected?void?ObjectDataSource1_Updated(object?sender,?ObjectDataSourceStatusEventArgs?e)
????{
????????if?(e.Exception?!=?null)
????????{
????????????e.ExceptionHandled?=?true;
????????????this.Label1.Text?=?e.Exception.Message;
????????}
????}
}
其他的數據綁定控件(DetailsView,FormView,GridView),代碼大同小異,他們都可以自動完成增刪改查的功能,所以再這里就不寫了。如果有朋友有更好的辦法或者建議,可以留言交流一下。 可以留下EMAIL。
從05出來以后由于功能明顯比03夸張了很多,所以在開發的時候也就很方便。其中以數據的顯示最為明顯。通過sqldatasource可以幾乎一行代碼都不需要寫,就能在GridView中顯示出來數據,并且進行增刪查改的操作,但是我個人總感覺這樣做是有問題的。因為使用sqldatasource,就明顯的破壞了3層架構的基本改變。哪么微軟在05當中,很重點的推出了objectdatasource這個東西,就是專門用來結合三層架構開發的一個數據源綁定控件。?在層次之間傳遞的也是object,這樣相對來說就比較好一些。
代碼在具體的下邊,其實主要就是DataList稍微麻煩一點,別的幾個控件都可以自動 實現增刪查改的功能,所以基本沒什么寫太多的代碼。!
在這里主要是DataList的代碼,以操作Jobs表為示例。
DbSqlHelpusing?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
using?System.Data.SqlClient;
namespace?DbSqlHelp
{
????public?abstract?class?DbSqlHelp
????{
????????static?string?StrConn?=?@"User?ID=sa;Password=perishryu;Initial?Catalog=pubs;Data?Source=OATHRYUSQL2005";
????????static?SqlDataAdapter?da;
????????static?SqlCommand?cmd;
????????static?SqlConnection?conn;
????????static?DataSet?ds;
????????public?static??DataSet?Search(string?sql)
????????{
????????????using?(da?=?new?SqlDataAdapter(sql,?StrConn))
????????????{
????????????????using?(ds?=?new?DataSet())
????????????????{
????????????????????da.Fill(ds);
????????????????????return?ds;
????????????????}
????????????}
????????}
????????public?static?bool?Make(string?sql)
????????{
????????????using?(conn?=?new?SqlConnection(StrConn))
????????????{
????????????????using?(cmd?=?new?SqlCommand(sql,?conn))
????????????????{
????????????????????if?(conn.State?!=?ConnectionState.Closed)
????????????????????{
????????????????????????conn.Close();
????????????????????}
????????????????????try
????????????????????{
????????????????????????conn.Open();
????????????????????????cmd.ExecuteNonQuery();
????????????????????????return?false;
????????????????????}
????????????????????catch(System.Exception?ex)
????????????????????{
????????????????????????throw?ex;
????????????????????}
????????????????????finally
????????????????????{
????????????????????????conn.Close();
????????????????????}
????????????????}
????????????}
????????}
????}
}
Model
using?System;
using?System.Collections.Generic;
using?System.Text;
namespace?Model
{
????public?class?Job_Model
????{
????????public?Job_Model()
????????{
????????}
????????public?Job_Model(int?id,?string?desc,?int?min,?int?max)
????????{
????????????this.job_desc?=?desc;
????????????this.job_id?=?id;
????????????this.min_lvl?=?min;
????????????this.max_lvl?=?max;
????????}
????????int?job_id;
????????public?int?Job_id
????????{
????????????get?{?return?job_id;?}
????????????set?{?job_id?=?value;?}
????????}
????????string?job_desc;
????????public?string?Job_desc
????????{
????????????get?{?return?job_desc;?}
????????????set?{?job_desc?=?value;?}
????????}
????????int?min_lvl;
????????public?int?Min_lvl
????????{
????????????get?{?return?min_lvl;?}
????????????set?{?min_lvl?=?value;?}
????????}
????????int?max_lvl;
????????public?int?Max_lvl
????????{
????????????get?{?return?max_lvl;?}
????????????set?{?max_lvl?=?value;?}
????????}
????}
} DAL
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
namespace?DAL
{
????public?class?Job_DAL
????{
????????string?sql;
????????public?DataSet?Select_Job_Dal(string?jobid)
????????{
????????????sql?=?"select?*?from?jobs?where?job_id='"?+jobid?+?"'";
????????????return?DbSqlHelp.DbSqlHelp.Search(sql);
????????}
????????public?DataSet?Select_Job_Dal()
????????{
????????????sql?=?"select?*?from?jobs";
????????????return?DbSqlHelp.DbSqlHelp.Search(sql);
????????}
????????public?bool?Update_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?=?"update?jobs?set?job_desc='"?+?job.Job_desc?+?"',min_lvl='"?+?job.Min_lvl?+?"',max_lvl='"?+?job.Max_lvl?+?"'?where?job_id='"?+?job.Job_id?+?"'";
????????????try
????????????{
????????????????return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????catch(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????????public?bool?Insert_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?=?"insert?into?jobs?values('"?+?job.Job_desc?+?"','"?+?job.Min_lvl?+?"','"?+?job.Max_lvl?+?"')";
????????????try
????????????{
????????????????return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????catch?(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????????
????????}
????????public?bool?Delete_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?=?"delete?from?jobs?where?job_id='"?+?job.Job_id?+?"'";
????????????try
????????????{
????????????????return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????catch?(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????????
????????}
????}
}
BLL
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
namespace?BLL
{
????public?class?Job_BLL
????{
????????DAL.Job_DAL?jobdal;
????????public?DataSet?Select_BLL()
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????{
????????????????return?jobdal.Select_Job_Dal();
????????????}
????????}
????????public?DataSet?Select_BLL(string?jobid)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????{
????????????????return?jobdal.Select_Job_Dal(jobid);
????????????}
????????}
????????public?bool?Update_BLL(Model.Job_Model?job)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????try
????????????{
????????????????return?jobdal.Update_Job_Dal(job);
????????????}
????????????catch?(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????????public?bool?Insert_BLL(Model.Job_Model?job)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????try
????????????{
????????????????return?jobdal.Insert_Job_Dal(job);
????????????}
????????????catch(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????????public?bool?Delete_BLL(Model.Job_Model?job)
????????{
????????????jobdal?=?new?DAL.Job_DAL();
????????????try
????????????{
????????????????return?jobdal.Delete_Job_Dal(job);
????????????}
????????????catch(System.Exception?ex)
????????????{
????????????????throw?ex;
????????????}
????????}
????}
}
UI?? aspx頁面
<%@?Page?Language="C#"?AutoEventWireup="true"?CodeFile="DataListDemo.aspx.cs"?Inherits="DataListDemo"?%>
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html?xmlns="http://www.w3.org/1999/xhtml"?>
<head?runat="server">
????<title>無標題頁</title>
</head>
<body>
????<form?id="form1"?runat="server">
????<div>
????????<asp:DataList?ID="DataList1"?runat="server"?DataSourceID="ObjectDataSource1"?RepeatColumns="4"?RepeatDirection="Horizontal"?Width="720px"?DataKeyField="job_id"?OnCancelCommand="DataList1_CancelCommand"?OnEditCommand="DataList1_EditCommand"?OnUpdateCommand="DataList1_UpdateCommand"?OnDeleteCommand="DataList1_DeleteCommand">
????????????<ItemTemplate>
????????????????job_id:<asp:Literal?ID="Literal1"?runat="server"?Text='<%#Eval("job_id")?%>'></asp:Literal><br?/>
????????????????job_desc:<asp:Literal?ID="Literal2"?runat="server"?Text='<%#Eval("job_desc")?%>'></asp:Literal><br?/>
????????????????min_lvl:<asp:Literal?ID="Literal3"?runat="server"?Text='<%#Eval("min_lvl")?%>'></asp:Literal><br?/>
????????????????max_lvl:<asp:Literal?ID="Literal4"?runat="server"?Text='<%#Eval("max_lvl")?%>'></asp:Literal><br?/>
????????????????<asp:LinkButton?ID="LinkButton1"?runat="server"?CommandName="Edit">編輯</asp:LinkButton>
????????????????<asp:LinkButton?ID="LinkButton2"?runat="server"?CommandName="delete">刪除</asp:LinkButton>
????????????</ItemTemplate>
????????????<EditItemTemplate>
????????????????job_id:<asp:Literal?ID="Literal1"?runat="server"?Text='<%#Eval("job_id")?%>'></asp:Literal><br?/>
????????????????job_desc:<asp:TextBox?ID="TextBox1"?runat="server"?Text='<%#Bind("job_desc")?%>'></asp:TextBox><br?/>
????????????????min_lvl:<asp:TextBox?ID="TextBox2"?runat="server"?Text='<%#Bind("min_lvl")?%>'></asp:TextBox><br?/>
????????????????max_lvl:<asp:TextBox?ID="TextBox3"?runat="server"?Text='<%#Bind("max_lvl")?%>'></asp:TextBox><br?/>
????????????????<asp:LinkButton?ID="LinkButton3"?runat="server"?CommandName="update">更新</asp:LinkButton>
????????????????<asp:LinkButton?ID="LinkButton4"?runat="server"?CommandName="cancel">取消</asp:LinkButton>
????????????</EditItemTemplate>
???????????
????????</asp:DataList><asp:ObjectDataSource?ID="ObjectDataSource1"?runat="server"?DataObjectTypeName="Model.Job_Model"
????????????DeleteMethod="Delete_BLL"?InsertMethod="Insert_BLL"?SelectMethod="Select_BLL"
????????????TypeName="BLL.Job_BLL"?UpdateMethod="Update_BLL"?OnUpdating="ObjectDataSource1_Updating"?OnDeleting="ObjectDataSource1_Deleting"?OnUpdated="ObjectDataSource1_Updated"></asp:ObjectDataSource>
????????<asp:Label?ID="Label1"?runat="server"?Text="Label"?Width="280px"></asp:Label>
????????
????</div>
????</form>
</body>
</html>
UI?? CS代碼
using?System;
using?System.Data;
using?System.Configuration;
using?System.Collections;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
using?System.Web.UI.HtmlControls;
using?System.ComponentModel;
public?partial?class?DataListDemo?:?System.Web.UI.Page
{
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????}
????protected?void?DataList1_EditCommand(object?source,?DataListCommandEventArgs?e)
????{
????????this.DataList1.EditItemIndex?=?e.Item.ItemIndex;
????????DataBind();
????}
????protected?void?DataList1_CancelCommand(object?source,?DataListCommandEventArgs?e)
????{
????????this.DataList1.EditItemIndex?=?-1;
????????DataBind();
????}
????protected?void?ObjectDataSource1_Updating(object?sender,?ObjectDataSourceMethodEventArgs?e)
????{
????????((Model.Job_Model)(e.InputParameters[0])).Job_id?=?job.Job_id;
????????((Model.Job_Model)(e.InputParameters[0])).Job_desc?=?job.Job_desc;
????????((Model.Job_Model)(e.InputParameters[0])).Min_lvl?=?job.Min_lvl;
????????((Model.Job_Model)(e.InputParameters[0])).Max_lvl?=?job.Max_lvl;
????????this.DataList1.EditItemIndex?=?-1;
????????DataBind();
????}
????Model.Job_Model?job;
????protected?void?DataList1_UpdateCommand(object?source,?DataListCommandEventArgs?e)
????{
????????job?=?new?Model.Job_Model();
????????job.Job_id?=?Convert.ToInt32(((Literal)(this.DataList1.Items[e.Item.ItemIndex].FindControl("Literal1"))).Text);
????????job.Job_desc?=?((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1"))).Text;
????????job.Min_lvl?=?Convert.ToInt32(((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox2"))).Text);
????????job.Max_lvl?=?Convert.ToInt32(((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox3"))).Text);
????????ObjectDataSource1.Update();
????}
????protected?void?DataList1_DeleteCommand(object?source,?DataListCommandEventArgs?e)
????{
????????job?=?new?Model.Job_Model();
????????job.Job_id?=?Convert.ToInt32(((Literal)(this.DataList1.Items[e.Item.ItemIndex].FindControl("Literal1"))).Text);
????????ObjectDataSource1.Delete();
????}
????protected?void?ObjectDataSource1_Deleting(object?sender,?ObjectDataSourceMethodEventArgs?e)
????{
????????((Model.Job_Model)(e.InputParameters[0])).Job_id?=?job.Job_id;
????????DataBind();
????}
????protected?void?ObjectDataSource1_Updated(object?sender,?ObjectDataSourceStatusEventArgs?e)
????{
????????if?(e.Exception?!=?null)
????????{
????????????e.ExceptionHandled?=?true;
????????????this.Label1.Text?=?e.Exception.Message;
????????}
????}
}
其他的數據綁定控件(DetailsView,FormView,GridView),代碼大同小異,他們都可以自動完成增刪改查的功能,所以再這里就不寫了。如果有朋友有更好的辦法或者建議,可以留言交流一下。 可以留下EMAIL。
轉載于:https://www.cnblogs.com/mFrog/archive/2008/04/18/1160521.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的使用objectdatasource结合数据绑定控件进行简单三层架构的开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux rm(remove) 命令详
- 下一篇: The Simple Life