Связывание элементов управления Web Form со списками данных. Примеры.
Связывание с простыми списками данных (repeated-valuebinding):
• При связывании списка с данными создаются элементы пользовательского интерфейса для каждого элемента списка.
• Каждый элемент содержит текст (показываемый пользователю) и необязательное значение (которое не показывается)
• Используется для простых списочных ЭУ:
– <asp:ListBox>
• Единственный или множественный выбор
– <asp:DropDownList>
– <asp:RadioButtonList>
– <asp:CheckBoxList>
Алгоритм связывания с простыми списками данных:
• Шаги для связывания с простыми списками данных
– Создать списочный ЭУ
– Создать коллекцию
– Задать ЭУ значение DataSource
– Задать (необязательно) поля DataTextField и DataValueField
– Вызвать методDataBind()
Пример:
protected void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack) {
// Create the data source.
Hashtable ht = new Hashtable();
ht.Add("Lasagna", "Key1");
ht.Add("Spaghetti", "Key2");
ht.Add("Pizza", "Key3");
// Set the DataSource property for the controls.
Select1.DataSource = ht;
Select2.DataSource = ht;
Listbox1.DataSource = ht;
DropdownList1.DataSource = ht;
CheckList1.DataSource = ht;
OptionList1.DataSource = ht;
// Bind the controls.
this.DataBind();
}
Пример источника данных (DataSource): | Пример связывания со списком данных: |
DataView GetSampleData() { DataSet ds; SqlConnection cxn; SqlDataAdapter adp; cxn = new SqlConnection("server=localhost; " + "uid=sa;pwd=;database=Northwind"); adp = new SqlDataAdapter( "select CategoryID, CategoryName from Categories", cxn); ds = new DataSet(); adp.Fill(ds, "Categories"); return ds.Tables["Categories"].DefaultView; } | void Page_Load(object s, EventArgs e) { ListBox1.DataSource = GetSampleData(); ListBox1.DataValueField = "CategoryID"; ListBox1.DataTextField = "CategoryName"; ListBox1.DataBind(); } <asp:ListBox id="ListBox1" runat="server" /> void Page_Load(object s, EventArgs e) { ListBox1.DataBind(); } <asp:ListBox id="ListBox1" runat="server" DataSource=<%# GetSampleData() %> DataValueField=“CategoryID” DataTextField=“CategoryName” /> |
38. Элементы управления Web Form- источники данных. Элемент SqlDataSource и его использование для работы с реляционными данными. Выполнение параметризованных команд с использованием SqlDataSource.
|
|
Типы элементов – источников данных:
• для работы с табличными источниками данных
– SqlDataSource,
– AccessDataSource и
– ObjectDataSource
• для работы с иерархическими данными
– XmlDataSource и
– SiteMapDataSource
Пример описания источника данных:
<asp:AccessDataSource ID="AccessDataSource1"
runat="server"
DataFile="~/App_Data/guestbook.mdb"
SelectCommand="SELECT [WriteDate], [UserName], [UserMail], [Message] FROM [guestbook]”>
</asp:AccessDataSource>
Класс SqlDataSourceобъединяетвсебевозможности SqlConnection и SqlDataAdapter (плюсдополнительные).
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DemoBaseConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:DemoBaseConnectionString1.ProviderName %>"
</asp:SqlDataSource>
<asp:SqlDataSource ID="sourceEmployees" runat="server"
ProviderName="System.Data.SqlClient"
ConnectionString="<%$ ConnectionStrings:Northwind %>"
SelectCommand="SELECT EmployeeID, FirstName, LastName, Title, City FROM Employees"
|
|
UpdateCommand="UPDATE Employees SET
FirstName=@FirstName, LastName=@LastName,
Title=@Title, City=@City FROM Employees WHERE
EmployeeID=@EmployeeID">
</asp:SqlDataSource>
Извлечение записей:
Логика команд SqlDataSource применяется через четыре свойства:
§ SelectCommand,
§ InsertCommand,
§ UpdateCommand
§ DeleteCommand;
все они принимают строку.
Строка может быть SQL-кодом (в этом случае соответствующее свойство SelectCommandType, InsertCommandType, UpdateCommandType или DeleteCommandType должно быть установлено в Text — значение по умолчанию)
либо именем хранимой процедуры(в этом случае типом команды является StoredProcedure).
Примеризвлечениязаписей:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:toplivoConnectionString1 %>"
DeleteCommand="DELETE FROM [Fuels] WHERE [FuelID] = @FuelID"
InsertCommand="INSERT INTO [Fuels] ([FuelType], [FuelDensity]) VALUES (@FuelType, @FuelDensity)"
SelectCommand="SELECT [FuelID], [FuelType], [FuelDensity] FROM [Fuels]"
UpdateCommand="UPDATE [Fuels] SET [FuelType] = @FuelType, [FuelDensity] = @FuelDensity WHERE [FuelID] = @FuelID">
<DeleteParameters>
<asp:Parameter Name="FuelID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="FuelType" Type="String" />
<asp:Parameter Name="FuelDensity" Type="Single" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="FuelType" Type="String" />
<asp:Parameter Name="FuelDensity" Type="Single" />
|
|
<asp:Parameter Name="FuelID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
Параметризированныекоманды:
Типы параметров
Мы поможем в написании ваших работ! |