2009-04-19 15 views
5

Tengo un FormView vinculado a un ObjectDataSource.¿Cómo funciona FormView EditTemplate Actualizar valores en ObjectDataSource UpdateParameters bajo el capó?

* ObjectDataSource definición (parte omitida de que por simplicidad) *

<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> 

* definición FormView (porción omitida de que por simplicidad) *

<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' Me gustaría saber: ¿cómo sabe FormView qué parámetro de actualización rellenar con qué EditTemplate TextBox cuando el botón Actualizar se hace clic?
Por ejemplo, no he indicado "txtAddress" en el FormView para llenar el UpdateParameter "sAddress", pero InputParameters ["sAddress"] contiene el valor de texto de txtAddress. ¿Cómo sabe hacer eso?

¿Podría algún gurú iluminarme?

Muchas gracias,

Cullen

+0

Entonces, ¿este código funciona para usted o no? ¿Estás preguntando "cómo" por razones académicas, o porque no es vinculante para ti de la manera que quieres? –

Respuesta

1

Quizás es simplemente el orden en que se añaden los controles de cuadro de texto a la EditItemTemplate? es decir, el orden de los controles debe coincidir con el orden de UpdateParameters ...

Intente intercambiar la posición de txtHouseHoldName y txtAddress, ¿la dirección pasa al parámetro sName de su método de actualización?

2

"¿Cómo sabe FormView qué UpdateParameter rellenar con qué EditTemplate TextBox cuando se hace clic en el botón Actualizar?"

Creo que la respuesta simple es: lo sabe debido a las instrucciones de enlace que pones en los controles del cuadro de texto. P.ej. txtAddress tiene "Bind (" Address ")" por lo que cuando se llama a la actualización, tiene una conexión entre txtAddress y el parámetro "Dirección"

+0

Creo que esto es correcto. Lo que es realmente genial es que cuando configuras la propiedad DataTypeName en el objDS, debido a estas declaraciones de vinculación, se crea para ti un objeto con las propiedades asignadas correctamente y listo para pasar al método de actualización o insertMethod especificado. Muy genial. – Hcabnettek

Cuestiones relacionadas