您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何進(jìn)行ASP.NET 2.0數(shù)據(jù)綁定,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
1、為什么ASP.NET 2.0數(shù)據(jù)綁定控件不需要寫代碼就能完成更新、刪除、新建等數(shù)據(jù)操作?
在ASP.NET 1.x時(shí),DataGrid等控件使用DataBinder.Eval(Container.DataItem,"ColumnName")這樣的表達(dá)式可以將數(shù)據(jù)源中的數(shù)據(jù)綁定到控件上,但并不能在更新數(shù)據(jù)時(shí)自動(dòng)將控件中的新值取出,更新回?cái)?shù)據(jù)庫。所以ASP.NET 2.0數(shù)據(jù)綁定分為兩種:單向數(shù)據(jù)綁定(即表達(dá)式或ReadOnly設(shè)為True的BoundField,只提供從數(shù)據(jù)源到控件的數(shù)據(jù)綁定)和雙向數(shù)據(jù)綁定(,不但可以將數(shù)據(jù)從數(shù)據(jù)源綁定到控件,而且可以在操作數(shù)據(jù)時(shí)將控件中的數(shù)據(jù)提供給數(shù)據(jù)源控件),所以ASP.NET 2.0操作數(shù)據(jù)時(shí)就不需要寫大量e.Item.FindControl()這樣的代碼了。
2、在Update和Insert過程中,GridView/DetailsView/FormView是如何把值傳遞給數(shù)據(jù)源控件,以便數(shù)據(jù)源控件完成數(shù)據(jù)操作方法的調(diào)用的?
更新時(shí),GridView會提供兩套值給數(shù)據(jù)源控件,一套新值,匯集所有ReadOnly不為True的列的值和模板中所有表達(dá)式的值,另一套舊的值,則從當(dāng)前行對應(yīng)的DataKey中獲得(DataKey的值在綁定數(shù)據(jù)時(shí)就會被GridView保存到視圖狀態(tài)中),可以在GridView的 Updating事件處理程序中看到這一特征。舊的那套值提供給數(shù)據(jù)源控件后,它的Key會被數(shù)據(jù)源控件根據(jù) OldValuesParameterFormatString重命名。比如,GridView中的DataKeyNames設(shè)為ProductID,數(shù)據(jù)源控件的OldValuesParameterFormatString為original_{0},那么GridView在更新時(shí)傳給數(shù)據(jù)源控件的參數(shù)中就會有一個(gè)original_ProductID。
新的那套值和老的那套值合起來要?jiǎng)偤煤蛿?shù)據(jù)源控件需要的參數(shù)列表相匹配,不能多也不能少,這是初學(xué)者使用GridView更新數(shù)據(jù)時(shí)遇到最多的問題。
實(shí)際使用過程中如果主鍵列對應(yīng)的參數(shù)(比如,ProductID),沒有像Strong named Dataset那樣取名為original_ProductID,則需要更改數(shù)據(jù)源的OldValuesParameterFormatString,比如改成{0},這樣才能和實(shí)現(xiàn)方法的參數(shù)對應(yīng)起來。
3、如何實(shí)現(xiàn)開放式并發(fā)?
開放式并發(fā)的更新和刪除語句會有一個(gè)很長的where 子句,比如:
強(qiáng)類型數(shù)據(jù)集通過在高級選項(xiàng)上選中開放式并發(fā)的選鉤可以自動(dòng)生成這樣的命令。根據(jù)我們第2點(diǎn)的論述,只需在GirdView的DatakeyNames屬性中把所有的字段都加進(jìn)去,這樣就會自動(dòng)的把舊的值放進(jìn)老值集合中,滿足數(shù)據(jù)源的要求。由此,我們可以理解為什么DataGrid的 DataKeyField(單數(shù))屬性會被替換為DataKeyNames屬性(復(fù)數(shù))。以上介紹ASP.NET 2.0數(shù)據(jù)綁定
看完上述內(nèi)容,你們對如何進(jìn)行ASP.NET 2.0數(shù)據(jù)綁定有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。