Помогни ни да направим Uroci.net по - богат! Добави урок

Свързване на данни - Data Binding

bubust   трудност:    видян: 14926

Eдин от най-честите и общи процеси във вашите Web апликации са процесите на представяне на данни от бази данни. Microsoft e добавил някои ASP.NET контроли специално за извеждане на данни. Като добавка повечето от регулярните ASP.NET сървър контроли като TextBox, могат да се свържат с източник на данни. Добрата новина относно свързването на данни е, че много от контролите за данни, които разисквахме в глава Достъп до бази данни се използват и тук. Във Web формите те се използват по различен начин, но концепцията е същата. Създайте нова форма Web Form в проекта с име PayableData.aspx. Отначало в дизайнера тази форма е празна. За да добавите свързани с данни (data-bound) контроли към тази страница, трябва да осигурите източник на данни (data source). Кликнете върху Toolbox и от панел Data tab, довлечете SqlDataAdapter към страницата. Стартира се DataAdapter Configuration Wizard, както видяхте в предишната глава. Щракнете бутон Next и ще изберете каква връзка с данните (data connection) да използвате.

Използвайте тази, която създадохте и която сочи към база данни Payable_Data.dbo. Щракнете бутон Next. На следващата страница, изберете Use SQL Statement и щракнете бутон Next. В текстовата кутия напишете тази SQL инструкция: Select * from Vendors. Щракнете бутон Finish.

Забележка

Да, това е много работа. Има по-прост начин да се постигнат същите резултати. Използвайки Server Explorer, можете да довлечете таблица Vendors през съответния сървър и да я пуснете във вашата форма. Готово! Два контрола се добавиха към вашата форма: SqlConnection1 и SqlDataAdapter1 (виж фигура 118) От меню Data, изберете Generate DataSet. Отваря се диалогов прозорец. Изберете да създадете ново DataSet с име dsVendors, и оставете вдигната отметката във въпроса дали искате да добавите инстанция на класа към дизайнера. Visual Studio сега добавя обект dsVendors, с име dsVendors1, към вашия дизайнер.

Фигура 118 Адаптера за данни и връзката на таблица Vendors с мрежата за данни (DataGrid).


От тук нататък имате множество DataSet , което може да бъде запълнено с данни. В Toolbox, отидете на панел WebForms tab. Довлечете контрол DataGrid към дизайнера. DataGrid контролът автоматически извежда данните в мрежов (grid) формат, използвайки HTML таблици. След като контрола DataGrid се изведе на формата, дясно кликване и избирате Property Builder. Това отваря диалогов прозорец Properties. На страница General page, от падащия списък DataSource изберете таблица Vendors на dsVendors1. В комбобокс Data Key Field, от падащия списък изберете първичен ключ на таблица Vendors - VendorID. Щракнете бутон OK.

Обратно в дизайнера, ще видите че мрежата (grid) e пораснала, и сега има колона за всяко поле на базата данни. Още не сте привършили. Двукратно кликване на формата, за да изведете прозореца за кода. Ще видите събитийна процедура PayableData_Load. Добавете следния код:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then

' оценява "вярно-true" първия път когато браузерът отвори страницата

Me.SqlConnection1.Open()

Me.SqlDataAdapter1.Fill(DsVendors1)

Me.SqlConnection1.Close()

DataGrid1.DataBind()

End If

End Sub

Първият ред код, който добавихте, FillDataSet(dsVendors1), вика подпрограмата, която бе създадена за вас, когато избрахте да генерирате методи. Тя отива в базата данни, изпълнява инструкцията в sqlDataAdapter, и съхранява резултантните записи в DataSet на което ги подавате като параметър (в този случай, dsVendors1). Четвъртия ред код, DataGrid1.DataBind(), свързва мрежата (grid) към контрол DataView, който на ход е свързан към DataSet. Уверете се, че вашата форма PayableData е стартова и стартирайте проекта. Ще видите записите от таблица Vendors в мрежов формат (grid) на страницата в IE, както е показано на фигура 119.


Фигура 119 Мрежата за данни ( DataGrid) извежда съдържанието на таблица Vendors само с два реда код.

- Манипулиране на така наречените само повикващи се страници (Re-entrant Pages)

Да обсъдим кода в манипулатора на събитието PayableData_Load

If Not IsPostback Then ` Оценява true първия път, когато браузера отваря страницата

IsPostback проверката се използва за определяне дали потребителят е викал тази форма преди това. Помислете за природата на HTTP: Всеки път когато някой вика формата, това изглежда като напълно нова заявка за Web сървъра. ASP.NET, записва някаква ViewState информация в страницата, когато се изпрати и разгърне при клиента. Заради това, когато клиента присъедини страницата обратно към сървъра, ASP.NET може да види, че страницата е пращана преди това при потребителя. По тази причина кодът вътре в инструкция If се изпълнява само веднаж за всеки потребител, който изиска тази страница. Примерно, ако искате да знаете кой потребител е посетил страницата, можете да запишете това само веднаж, вместо всеки път, когато събитието се подаде към сървъра. ASP.NET сървър контролите работят в така наречения модел: re-entrant page model. С други думи, когато събитията на контролите указват на формата в страницата да се приеме, страницата вика самата себе си , тоест атрибута Action във прибавката на формата (Form tag) сочи същата страница, която вече е визуализирана. Това означава, че много страници викат себе си отново и отново и IsPostback е важно да усъвършенствува разширяемостта на апликацията. Тук за разлика от Windows апликацията, събитията Load и Unload се вдигат много пъти докато се използва същата страница. IsPostback осъществява лесен начин да се види дали това е първото зареждане на конкретния потребител.



Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com