Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5902 / 538 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 9:

Элементы-потребители данных ASP .NET 2.0

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

FormView

Еще один новый элемент FormView похож на DetailsView, но отличается от него тем, что нуждается в шаблоне для своего представления:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:pubsConnectionString1 %>"
    DeleteCommand="DELETE FROM [authors] WHERE [au_id] = @au_id" 
InsertCommand="INSERT INTO [authors] ([au_id], [au_lname], 
[au_fname], [phone], [address], [city], [state], [zip], [con-
tract]) VALUES (@au_id, @au_lname, @au_fname, @phone, @address, 
@city, @state, @zip, @contract)"
    ProviderName="<%$ 
ConnectionStrings:pubsConnectionString1.ProviderName %>" 
SelectCommand="SELECT [au_id], [au_lname], [au_fname], [phone], 
[address], [city], [state], [zip], [contract] FROM [authors]"
    UpdateCommand="UPDATE [authors] SET [au_lname] = @au_lname, 
[au_fname] = @au_fname, [phone] = @phone, [address] = @address, 
[city] = @city, [state] = @state, [zip] = @zip, [contract] = 
@contract WHERE [au_id] = @au_id" EnableCaching="true" 
CacheDuration="120">
    <InsertParameters>
        <asp:Parameter Name="au_id" Type="String" />
        <asp:Parameter Name="au_lname" Type="String" />
        <asp:Parameter Name="au_fname" Type="String" />
        <asp:Parameter Name="phone" Type="String" />
        <asp:Parameter Name="address" Type="String" />
        <asp:Parameter Name="city" Type="String" />
        <asp:Parameter Name="state" Type="String" />
        <asp:Parameter Name="zip" Type="String" />
        <asp:Parameter Name="contract" Type="Boolean" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="au_lname" Type="String" />
        <asp:Parameter Name="au_fname" Type="String" />
        <asp:Parameter Name="phone" Type="String" />
        <asp:Parameter Name="address" Type="String" />
        <asp:Parameter Name="city" Type="String" />
        <asp:Parameter Name="state" Type="String" />
        <asp:Parameter Name="zip" Type="String" />
        <asp:Parameter Name="contract" Type="Boolean" />
        <asp:Parameter Name="au_id" Type="String" />
    </UpdateParameters>
    <DeleteParameters>
        <asp:Parameter Name="au_id" Type="String" />
    </DeleteParameters>
</asp:SqlDataSource>
         
<asp:FormView ID="FormView1" runat="server" DataKeyNames="au_id"
     DataSourceID="SqlDataSource1">
    <EditItemTemplate>
        au_id:
        <asp:Label ID="au_idLabel1" runat="server" Text='<%# 
Eval("au_id") %>'></asp:Label><br />
        au_lname:
        <asp:TextBox ID="au_lnameTextBox" runat="server" 
Text='<%# Bind("au_lname") %>'>
        </asp:TextBox><br />
        au_fname:
        <asp:TextBox ID="au_fnameTextBox" runat="server" 
Text='<%# Bind("au_fname") %>'>
        </asp:TextBox><br />
        phone:
        <asp:TextBox ID="phoneTextBox" runat="server" Text='<%# 
Bind("phone") %>'>
        </asp:TextBox><br />
        address:
        <asp:TextBox ID="addressTextBox" runat="server" Text='<%# 
Bind("address") %>'>
        </asp:TextBox><br />
        city:
        <asp:TextBox ID="cityTextBox" runat="server" Text='<%# 
Bind("city") %>'>
        </asp:TextBox><br />
        state:
        <asp:TextBox ID="stateTextBox" runat="server" Text='<%# 
Bind("state") %>'>
        </asp:TextBox><br />
        zip:
        <asp:TextBox ID="zipTextBox" runat="server" Text='<%# 
Bind("zip") %>'>
        </asp:TextBox><br />
        contract:
        <asp:CheckBox ID="contractCheckBox" runat="server" 
Checked='<%# Bind("contract") %>' /><br />
        <asp:LinkButton ID="UpdateButton" runat="server" 
CausesValidation="True" CommandName="Update"
        Text="Update">
        </asp:LinkButton>
        <asp:LinkButton ID="UpdateCancelButton" runat="server" 
CausesValidation="False" CommandName="Cancel"
        Text="Cancel">
        </asp:LinkButton>
    </EditItemTemplate>
    <InsertItemTemplate>
        au_id:
        <asp:TextBox ID="au_idTextBox" runat="server" Text='<%# 
Bind("au_id") %>'>
        </asp:TextBox><br />
        au_lname:
        <asp:TextBox ID="au_lnameTextBox" runat="server" 
Text='<%# Bind("au_lname") %>'>
        </asp:TextBox><br />
        au_fname:
        <asp:TextBox ID="au_fnameTextBox" runat="server" 
Text='<%# Bind("au_fname") %>'>
        </asp:TextBox><br />
        phone:
        <asp:TextBox ID="phoneTextBox" runat="server" Text='<%# 
Bind("phone") %>'>
        </asp:TextBox><br />
        address:
        <asp:TextBox ID="addressTextBox" runat="server" Text='<%# 
Bind("address") %>'>
        </asp:TextBox><br />
        city:
        <asp:TextBox ID="cityTextBox" runat="server" Text='<%# 
Bind("city") %>'>
        </asp:TextBox><br />
        state:
        <asp:TextBox ID="stateTextBox" runat="server" Text='<%# 
Bind("state") %>'>
        </asp:TextBox><br />
        zip:
        <asp:TextBox ID="zipTextBox" runat="server" Text='<%# 
Bind("zip") %>'>
        </asp:TextBox><br />
        contract:
        <asp:CheckBox ID="contractCheckBox" runat="server" 
Checked='<%# Bind("contract") %>' /><br />
        <asp:LinkButton ID="InsertButton" runat="server" 
CausesValidation="True" CommandName="Insert"
        Text="Insert">
        </asp:LinkButton>
        <asp:LinkButton ID="InsertCancelButton" runat="server" 
CausesValidation="False" CommandName="Cancel"
        Text="Cancel">
        </asp:LinkButton>
    </InsertItemTemplate>
    <ItemTemplate>
    au_id:
    <asp:Label ID="au_idLabel" runat="server" Text='<%# 
Eval("au_id") %>'></asp:Label><br />
    Author's name:
    <asp:Label ID="au_fnameLabel" runat="server" Text='<%# 
Bind("au_fname") %>'></asp:Label>
    
    <asp:Label ID="au_lnameLabel" runat="server" Text='<%# 
Bind("au_lname") %>'></asp:Label><br />
    phone:
    <asp:Label ID="phoneLabel" runat="server" Text='<%# 
Bind("phone") %>'></asp:Label>
    
    address:
    <asp:Label ID="addressLabel" runat="server" Text='<%# 
Bind("address") %>'></asp:Label><br />
    city:
    <asp:Label ID="cityLabel" runat="server" Text='<%# 
Bind("city") %>'></asp:Label>
    
    state:
    <asp:Label ID="stateLabel" runat="server" Text='<%# 
Bind("state") %>'></asp:Label>
    
    zip:
    <asp:Label ID="zipLabel" runat="server" Text='<%# Bind("zip") 
%>'></asp:Label><br />
    contract:
    <asp:CheckBox ID="contractCheckBox" runat="server" 
Checked='<%# Bind("contract") %>'
    Enabled="false" /><br />
    <asp:LinkButton ID="EditButton" runat="server" 
CausesValidation="False" CommandName="Edit"
    Text="Edit">
    </asp:LinkButton>
    <asp:LinkButton ID="DeleteButton" runat="server" 
CausesValidation="False" CommandName="Delete"
    Text="Delete">
    </asp:LinkButton>
    <asp:LinkButton ID="NewButton" runat="server" 
CausesValidation="False" CommandName="New"
    Text="New">
    </asp:LinkButton>
    </ItemTemplate>
</asp:FormView>

На этом мы завершим рассмотрение работы с базами данных.

Заключение

ASP .NET 2.0 дает в пользование программистам архитектуру привязки данных, которая облегчает эту задачу. Вместо того чтобы вручную заполнять элементы управления данными, полученными в результате запроса, мы создаем элемент-источник данных и привязываем к ним один или несколько потребителей данных.

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319