Прив'язка з множинним значенням

Для відображення набору значень необхідно використовувати прив'язку з множинним значенням. Прив'язуваний набір значень повинен міститися в об'єкті, здатному зберігати колекції значень (наприклад, об'єкти ArrayList, Hashtable і ін.).

Кожен елемент, що підтримує можливість множинної прив'язки, містить наступний набір властивостей:

DataSource Об'єкт, що містить прив'язувані дані.
DataSourcelD Властивість, яка містить ідентифікатор об'єкту, що використовується для підключення до джерела даних. На відміну від DataSource, значення DataSourceID можна встановити в режимі дизайну на етапі розробки додатка.
DataTextField Містить найменування стовпця (для рядка) таблиці або властивість (для об'єкту) елементу даних, що включає значення, що відображується на екрані.
DataTextFormatString Містить необов'язковий рядок форматування, вживаний для відображення даних.
DataValueField Містить унікальний ідентифікатор або поле первинного ключа, яке використовується для витягання даних, пов'язаних з вибираним користувачем елементом.

Принципи використання всіх спискових елементів, здатних відображувати зв'язані дані, однаковий. Для прив'язки такого елементу до джерела даних необхідно встановити значення властивостей DataSource і DataTextField.

У наступному прикладі на сторінці розміщено два елементи - DropDownList1 і ListBox1, які пов'язані з одним і тим же джерелом даних - як таке виступає таблиця "Товари":

protected void Page_Load (object sender, EventArgs| e){ string strCon = WebConfigurationManager.ConnectionStrings ["Test_Db"].ConnectionString; string sqlString = "SELECT Кодтовара,НазваТовара,ціна FROM Товари"; SqlConnection sqlCon = new SqlConnection(strCon|); SqlDataAdapter da = new SqlDataAdapter(sqlString,sqlCon); DataSet ds = new DataSet(); da.Fill(ds, "Goods|"); DropDownList1.DataSource = ds.Tables["Goods"]; DropDownList1.DataTextField = "Наїменованієтовара"; DropDownList1.DataValueField = "Кодтовара"; ListBox1.DataSource = ds.Tables["Goods"]; ListBox1.DataTextField = "НазваТовра"; ListBox1.DataValueField = "Кодтовара"; this.DataBind();}

Оскільки об'єкт DataSet може містити багато таблиць, у властивості DataSource необхідно вказати ім'я таблиці, до якої необхідно здійснити прив'язку. Властивість DataTextField містить найменування стовпця таблиці, значення якого відображуватимуться елементом управління. Властивість DataValueField є необов'язковою і в даному випадку позначає те, що при виборі значення в елементі управління значення властивості SelectedItem цього елементу буде встановлено рівним значенню поля "Кодтовара", відповідного вибраному запису. Рахувати вибрані значення елементів можна таким чином:

protected void Button1_Click|(object sender, EventArgs e){ StringBuilder str| = new StringBuilder(); str.Append("У Випадному списку вибраний елемент"); str.Append(DropDownList1|.SelectedItem.Text); str.Append(" йому відповідає значення "); str.Append(DropDownList1|.SelectedValue); str.Append("</br>"); str.Append("У Списку вибрані елементи:</br>"); foreach (ListItem li in ListBox1.Items) { if (li.Selected) { str.Append(li.Text); str.Append(" значення - "); str.Append(li.Value); str.Append("</br>"); } } Label2.Text = str.ToString();}

У даному прикладі елемент ListBox1 підтримує можливість вибору відразу декількох елементів (для цього необхідно встановити значення властивості SelectionMode даного елементу рівним Multiple). Читання значення виділеного елементу в списку здійснюється за допомогою властивості SelectedItem. Проте у випадку з ListBox1 дана властивість використовувати не можна, оскільки можливе множинне виділення. Для визначення кожного елементу, виділеного в ListBox1, необхідно застосувати цикл, де відбувається звернення до колекції елементів Items, для кожного з яких є властивість Selected. Якщо значення даної властивості встановлене рівним true, даний елемент виділений і його необхідно відображувати.

Аналогічний принцип можна застосувати з будь-яким іншим елементом управління, що підтримує множинне виділення елементів.

Окрім використаних спискових елементів, ASP.NET містить також і складніші елементи, здатні прив'язуватися до даних і відображувати їх. До таких елементів відносяться GridView, DetailsView, FormView.

GridView є таблицею, здатною прив'язуватися до даних і відображувати вміст таблиць. Підтримує вибір, редагування, сортування і переміщення по сторінках даних. DetailsView призначений для показу одному запису з таблиці за раз. Підтримує редагування і переміщення по сторінках. FormView практично аналогічний DetailsView, з тією лише різницею, що FormView заснований на шаблонах, і це робить його гнучкішим при відображенні інформації.

Найпотужнішим елементом по кількості можливостей є GridView. Дуже часто його доводиться використовувати для відображення інформації у вигляді таблиці. Для прив'язки GridView до джерела даних необхідно встановити значення властивості DataSource. У наступному прикладі на сторінці розміщений об'єкт GridView, який прив'язується до таблиці "Товари" і відображує її вміст:

protected void Page_Load(object sender, EventArgs e){ string strCon = WebConfigurationManager.ConnectionStrings ["Test_Db"].ConnectionString; string strQuery = "SELECT * FROM| Товари"; SqlConnection sqlCon = new SqlConnection(strCon); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = new SqlCommand(strQuery, sqlCon); da.Fill(ds, "Goods"); GridView1.DataSource = ds.Tables["Goods|"]; this.DataBind();}

Показані приклади демонструють способи прив'язки до джерел даних з використанням програмного коду, проте це не єдина можливість здійснити прив'язку елементу управління до джерела даних. Visual Studio 2005 дозволяє здійснити прив'язку з використанням візуальних засобів. Для цих цілей.NET Framework містить декілька елементів управління джерелами даних. Вони розташовані на вкладці Data панелі Toolbox. Серед них такі як:

SqlDataSource - дозволяє підключатися до будь-якого джерела даних, яке має постачальника даних ADO|.NET До таких джерел даних відносяться SQL Server, OLE DB, Oracle та інші.

ObjectDataSource - дозволяє підключатися до призначеного для користувача класу доступу до даних. Цей підхід доцільно застосовувати при побудові великомасштабних і складних застосувань. Докладніше про використання призначених для користувача класів доступу до даних і елемент ObjectDataSource буде розказано в розділі, присвяченому реалізації трирівневої архітектури доступу до даних в ASP.NET

AccessDataSource - дозволяє підключатися до баз даних Microsoft Access.

XmlDataSource - дозволяє підключатися до XML-файлу.

SiteMapDataSource - дозволяє підключатися до файлу Web.Sitemap, що містить опис навігаційної структури Web-приложения.

Для використання елементу управління джерелами даних досить перетягнути його з панелі Toolbox в область Web-сторінки. При цьому він відображується у вигляді сірого прямокутника, що містить усередині найменування елементу управління джерелом даних.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: