我有一个绑定到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填充?
例如,我没有指示“txtAddress” “在FormView中填充UpdateParameter”sAddress“但是InputParameters [”sAddress“]包含txtAddress的Text值。怎么知道这样做?
任何一位大师都可以启发我吗?
非常感谢你,
库伦
答案 0 :(得分:2)
“当单击”更新“按钮时,FormView如何知道使用哪个EditTemplate TextBox填充哪个UpdateParame?”
我相信简单的答案是:它知道因为你放在TextBox控件中的Bind语句。例如。 txtAddress具有“Bind(”Address“)”所以当调用更新时,它在txtAddress和参数“Address”之间有一个连接
答案 1 :(得分:1)
也许只是将TextBox控件添加到EditItemTemplate的顺序?即控件的顺序必须与UpdateParameters的顺序相匹配......
尝试交换txtHouseHoldName和txtAddress的位置,地址是否会传递到更新方法的sName参数?
答案 2 :(得分:1)
我在博客上发布了一篇文章,详细讨论了Bind()在http://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspx 的工作原理。