5

ObjectDataSourceにバインドされたFormViewがあります。

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

知りたいのですが、FormViewは、[更新]ボタンがクリックされたときに、どのUpdateParameterにどのEditTemplate TextBoxを入力するかをどのように知るのですか?
たとえば、FormViewの「txtAddress」にUpdateParameter「sAddress」を入力するように指示していませんが、InputParameters["sAddress"]にはtxtAddressのテキスト値が含まれています。それを行うことをどのように知っていますか?

誰かが私を教えてくれますか?

どうもありがとう、

カレン

4

3 に答える 3

2

「更新ボタンがクリックされたときに、どの UpdateParameter にどの EditTemplate TextBox を設定するかを FormView はどのように認識しますか?」

簡単な答えは次のとおりだと思います。TextBox コントロールに配置した Bind ステートメントによって認識されます。たとえば、txtAddress には "Bind("Address")" があるため、更新が呼び出されると、txtAddress とパラメーター "Address" が接続されます。

于 2009-07-27T12:41:46.503 に答える
1

おそらく、TextBox コントロールが EditItemTemplate に追加される順序でしょうか? つまり、コントロールの順序は UpdateParameters の順序と一致する必要があります...

txtHouseHoldName と txtAddress の位置を交換してみてください。アドレスは update メソッドの sName パラメータに渡されますか?

于 2009-04-20T06:13:14.283 に答える
1

http://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspx で Bind() がどのように機能するかについての詳細な議論をブログに投稿しています。

于 2009-05-14T14:29:29.823 に答える