Atsiprašau už beveik savaitės pertrauką, vis tik gimtadienis reikalauja nemažai jėgų bei sveikatos :)

Abipusis duomenų susiejimas (two-way databinding) yra labai patogi, bet retai naudojama (iš dalies dėl savo ribotumo) ASP.NET galimybė. Jos dėka galima ne tik automatiškai užpildyti komponentus duomenimis iš verslo objekto, bet ir nuskaityti pasikeitusias reikšmes atgal į verslo objektą. Deja, bet abipusis duomenų susiejimas prieinamas tik GridView, FormView ir DetailsView komponentuose. Kadangi šiuo metu aš dirbu prie projekto, kuriame bandau kiek galima daugiau supaprastinti operavimą duomenimis, norėčiau parodyti jums minimalų abipusio duomenų susiejimo panaudojimą FormView pagrindu.

Tarkime, pagal duomenų bazės schemą mes sugeneravome žemiau pateiktus verslo objektus:

Tam, kad duomenis būtų ne tik pakraunamos į komponentus, bet ir nuskaitomos atgal, vietoje įprasto Eval metodo naudojame Bind metodą. Tas pats galioje ir pasirenkant įrašą iš elementų sąrašo:

Dabar prasidės pati įdomiausia dalis. Kaip tikriausiai pastebėjote, mano FormView komponentas naudojasi dataProducts duomenų šaltiniu (Data Source), o išsiskleidžiamas sąrašas ddlCategories – dataCategories. Pasižiūrėkime į jų aprašus:

dataCategories duomenų šaltinis naudoja CategoryController klasės GetList metodą kategorijų sąrašui gauti, kuris mano atveju atrodo taip:

dataProducts duomenų šaltinis naudoja GetProductByID metodą objekto gavimui ir Update metodą duomenų atnaujinimui. Šioje vietoje tikriausiai gali kilti klausimas: o kur Update metodo argumentai? Kadangi aš nurodžiau DataObjectTypeName savybę, ASP.NET sukurs man Product tipo objektą ir užpildys jo savybes pagal nurodytus Bind susiejimus. Naudojamas Update metodas parodytas žemiau:

Kaip matyti, abipusis duomenų susiejimas tikrai yra įdomus ir patogus dalykas. Šiuo metu jis turi pakankamai daug rimtų apribojimų, bet tikėkimės Microsoft darbai judės šia kryptimi. Jeigu jus šiuo metu naudojate kokį nors abipusio susiejimo sprendimą - parašykite! Manau ne tik man bus naudinga sužinoti apie tokių egzistavimą, o kol kas tiek…

Rodyk draugams