Asp.Net中的數(shù)據(jù)源概述與配置及實(shí)例代碼
數(shù)據(jù)源
數(shù)據(jù)綁定分為數(shù)據(jù)源和數(shù)據(jù)綁定控件兩部分,數(shù)據(jù)綁定控件通過(guò)數(shù)據(jù)源來(lái)獲得數(shù)據(jù),通過(guò)數(shù)據(jù)源來(lái)隔離數(shù)據(jù)提供者和數(shù)據(jù)使用者,數(shù)據(jù)綁定控件通過(guò)數(shù)據(jù)源來(lái)對(duì)數(shù)據(jù)進(jìn)行修改,數(shù)據(jù)源有SqlDataSource、AccessDataSource、ObjectDataSource、LinqDataSource、EntityDataSource、XmlDataSource等
ObjectDataSourceWeb開(kāi)發(fā)中應(yīng)用最廣的數(shù)據(jù)源,做為主要介紹
數(shù)據(jù)綁定控件
數(shù)據(jù)綁定控件有列表數(shù)據(jù)綁定控件(DropDownList、RadioButtonList、ListBox、CheckBoxList、BulletedList等)和復(fù)雜控件(DataGrid、GridView、DetailsView、FormView、ListView、Repeater、DataList等,GridView等都是ListView子集)。Repeater是最輕量級(jí)的組件,在互聯(lián)網(wǎng)的前臺(tái)用的最多,ListView是GridView、DetailsView、FormView、Repeater、DataList等這些控件的大一統(tǒng)者,所以數(shù)據(jù)綁定控件主要介紹Repeater和ListView
ObjectDataSource
ObjectDataSource用來(lái)將一個(gè)類做為數(shù)據(jù)源,TypeName屬性為數(shù)據(jù)源類的全名,有DeleteMethod(刪除方法)、InsertMethod(新增方法)、SelectMethod(查詢方法)、UpdateMethod(修改方法)等幾個(gè)屬性,分別為類中刪除、插入、查詢、更新數(shù)據(jù)的方法名,這些方法可能有參數(shù),參數(shù)的值是通過(guò)DeleteParameters、UpdateParameters、InsertParameters等嵌套節(jié)點(diǎn)設(shè)置的。
ObjectDataSource訪問(wèn)自己寫的普通類,在類上標(biāo)注[DataObject] DataObjectMethod
通常手工編寫ObjectDataSource太麻煩,微軟比較貼心,我們可以通過(guò)可視化界面來(lái)完成。將ObjectDataSource拖放到界面上,在右上角的智能標(biāo)志上選擇“配置數(shù)據(jù)源”即可進(jìn)行配置。數(shù)據(jù)源類一般TypeNameAdapter類,選中類,選擇【下一步】,分別選擇對(duì)應(yīng)的獲得、刪除、更新、插入數(shù)據(jù)的方法
圖解:
1、從工具箱=》數(shù)據(jù)=》ObjectDataSources拖入ObjectDataSourcesControl.aspx界面中
2、點(diǎn)擊控件右上角箭頭“配置數(shù)據(jù)源”彈出對(duì)話框選擇業(yè)務(wù)對(duì)象 即數(shù)據(jù)源需要調(diào)用到的業(yè)務(wù)層方法 比如班級(jí)業(yè)務(wù)對(duì)象 BLL.Classes 下一步
3、可以分別選擇增刪改查調(diào)用的業(yè)務(wù)層方法 比如查詢所有未刪除班級(jí) getAllClasses(Boolean isDel)帶有參數(shù)是否刪除下一步對(duì)參數(shù)進(jìn)行設(shè)置
4、設(shè)置isDel的默認(rèn)值為false
5、至此數(shù)據(jù)源即配置完成
6、界面中拖入DropDownList數(shù)據(jù)控件 同樣點(diǎn)擊右上角=》選擇數(shù)據(jù)源為上述ObjectDataSources1
運(yùn)行結(jié)果
補(bǔ)充:
Q:我第一訪問(wèn)該頁(yè)面的時(shí)候下拉框加載出數(shù)據(jù) 如果第二次我發(fā)送數(shù)據(jù)請(qǐng)求時(shí)不調(diào)用getAllClasses方法 頁(yè)面下拉框還會(huì)顯示數(shù)據(jù)嗎?
代碼解答:
前臺(tái)頁(yè)面簡(jiǎn)單控件
<asp : DropDownList ID ="DropDownList1" runat ="server">
</asp : DropDownList>
<input type="submit" value="再次請(qǐng)求" />
后臺(tái)頁(yè)面代碼
public partial class ObjectDataSourcesControl : System.Web.UI.Page {
protected void Page_Load( object sender, EventArgs e) {
//由于數(shù)據(jù)綁定控件默認(rèn)會(huì)將數(shù)據(jù)保存在ViewState中,因此不會(huì)每次刷新頁(yè)面都會(huì)重新加載數(shù)據(jù),只有第一次需要加載(!IsPostBack)
if (!IsPostBack) {
List <MODEL.Classes > lists = new BLL.Classes ().getAllClasses(false );
//用代碼綁定可以將任何實(shí)現(xiàn)了IEnumerable接口的對(duì)象綁定到數(shù)據(jù)綁定控件。比如:
//DropDownList1.DataSource = new object[] { 3, 5, 6 };
//DropDownList1.DataBind();
DropDownList1.DataTextField = "CName" ;
DropDownList1.DataValueField = "CID" ;
DropDownList1.DataSource = lists;
DropDownList1.DataBind();
}
}
}
當(dāng)點(diǎn)擊"再次請(qǐng)求時(shí)" 后臺(tái)頁(yè)面判斷ispostback=false不會(huì)再次getAllClasses 那為什么頁(yè)面下拉框中仍然有值呢?
A:因?yàn)榉?wù)器返回的頁(yè)面中包含__VIEWSTATE 在頁(yè)面生命周期PageLoad之前執(zhí)行的LoadState就是將客戶端提交的__VIEWSTATE保存的控件屬性與值還原到頁(yè)面控件中 如下頁(yè)面源文件截圖
相關(guān)文章
ASP.NET Core中Grpc通信的簡(jiǎn)單用法
這篇文章介紹了ASP.NET Core中Grpc通信的簡(jiǎn)單用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Asp.net FileUpload+Image制作頭像效果示例代碼
個(gè)人信息中通常需要自己的頭像或者照片,今天主要介紹一下使用FileUpload+img控件上傳照片,感興趣的朋友可以參考下2013-08-08C# FTP,GetResponse(),遠(yuǎn)程服務(wù)器返回錯(cuò)誤
C# FTP,GetResponse(),遠(yuǎn)程服務(wù)器返回錯(cuò)誤:(550) 文件不可用(例如,未找到文件,無(wú)法訪問(wèn)文件)2009-06-06ASP.NET中將聲音文件添加到資源中并進(jìn)行播放的方法
這篇文章主要介紹了ASP.NET中將聲音文件添加到資源中并進(jìn)行播放的方法,實(shí)例分析了聲音文件的添加及播放實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07asp.net網(wǎng)站開(kāi)發(fā)包wq.dll打包下載
這個(gè)wq.dll主要是用來(lái)給Web群和C#聯(lián)盟群及GUI群的朋友使用的,其它群和使用控件開(kāi)發(fā)web的朋友可以直接無(wú)視,這個(gè)封裝好的包是一個(gè)基礎(chǔ)開(kāi)發(fā)包,可以輕松的幫你完成一些小型網(wǎng)站的開(kāi)發(fā),支持.Net Framework2.0(及以上平臺(tái))。2009-10-10asp.net mvc實(shí)現(xiàn)簡(jiǎn)單的實(shí)時(shí)消息推送
這篇文章主要介紹了asp.net mvc實(shí)現(xiàn)簡(jiǎn)單的實(shí)時(shí)消息推送的相關(guān)資料,需要的朋友可以參考下2016-07-07ASP.Net使用System.Security.Principal模擬用戶
這篇文章介紹了ASP.Net使用System.Security.Principal模擬用戶的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05