2009-04-19 3 views
5

У меня есть FormView, привязанный к объекту ObjectDataSource.Как значения обновления FormView EditTemplate обновляются в ObjectDataSource UpdateParameters под капотом?

* Определение ObjectDataSource (опущено часть его для простоты) *

<asp:ObjectDataSource 
    ID="odsHousehold" 
    runat="server" 
    TypeName="BLL.Households" 
    ConflictDetection="OverwriteChanges" 
    UpdateMethod="UpdateHousehold" 
    > 
    <UpdateParameters> 
     <asp:Parameter Name="sName" Type="String" Direction="Input" /> 
     <asp:Parameter Name="sAddress" Type="String" Direction="Input" DefaultValue="" /> 
     <asp:Parameter Name="sCity" Type="String" Direction="Input" DefaultValue="" /> 
     <asp:Parameter Name="sState" Type="String" Direction="Input" DefaultValue="" /> 
     <asp:Parameter Name="sZip" Type="String" Direction="Input" DefaultValue="" /> 
    </UpdateParameters> 
</asp:ObjectDataSource> 

* Определение FormView (опущено часть его для простоты) *

<asp:FormView 
    ID="fvHousehold" 
    runat="server" 
    DataKeyNames="HouseholdID" 
    DataSourceID="odsHousehold" 
    HorizontalAlign = "Left" 
> 
<EditItemTemplate> 
<asp:TextBox ID="txtHouseHoldName" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("HouseholdName") %>'></asp:TextBox> 
<asp:TextBox ID="txtAddress" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("Address") %>'></asp:TextBox> 
<asp:TextBox ID="txtCity" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("City") %>'></asp:TextBox> 
<asp:TextBox ID="txtState" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("State") %>'></asp:TextBox> 
<asp:TextBox ID="txtZip" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("Zip") %>'></asp:TextBox> 
<asp:Button ID="btnUpdateHousehold" runat="server" Text="Update" CommandName="Update" /> 
</EditItemTemplate> 
</asp:FormView> 

I» d хотел бы знать: как FormView знает, какой UpdateParameter заполнить, с помощью которого EditTemplate TextBox, когда кнопка Обновить нажал?
Например, я не инструктировал «txtAddress» в FormView для заполнения «sAddress» UpdateParameter, но InputParameters [«sAddress»] содержит текстовое значение txtAddress. Как он это знает?

Может ли какой-нибудь гуру просветить меня?

Спасибо большое,

Cullen

+0

Итак, работает ли этот код для вас или нет? Вы просто спрашиваете «как» по академическим причинам или потому, что это не является обязательным для вас так, как вы хотите? –

ответ

1

Может быть, это просто порядок, в котором элементы управления TextBox добавляются в EditItemTemplate? то есть порядок элементов управления должен соответствовать порядку UpdateParameters ...

Попробуйте поменять положение txtHouseHoldName и txtAddress, передает ли адрес в параметр sName вашего метода обновления?

2

«Как FormView знает, какой UpdateParameter заполнить, с помощью которого EditTemplate TextBox при нажатии кнопки« Обновить »?»

Я считаю, что простой ответ: он знает из-за утверждений Bind, которые вы вводите в элементы управления TextBox. Например. txtAddress имеет «Bind» («Адрес»), поэтому, когда вызывается обновление, у него есть соединение между txtAddress и параметром «Адрес»

+0

Я считаю, что это правильно. Что действительно круто, когда вы устанавливаете свойство DataTypeName в objDS, то из-за этих операторов привязки для вас создается объект с назначенными свойствами и готовый перейти к указанному методу updateMethod или insertMethod. Довольно круто. – Hcabnettek