使用.NET 2.0,我有一个FormView,其字段绑定到ObjectDataSource(ODS)。这些字段以正确的值开始 - 也就是说,当调用ODS的SelectMethod时它们来自Person对象 - 但在进行更改并调用ODS的UpdateMethod后,我无法从字段中获取这些新值或任何值从更新的调用堆栈中的任何位置。我的代码如下所示:
<div id="personInfo"><asp:FormView ID="fvwPerson" runat="server" DataSourceID="srcPerson" DefaultMode="Edit">
<EditItemTemplate>
<table border="0" width="100%" style="font-weight:bold">
...
<td align="right">
First Name:
</td>
<td>
<asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("FirstName")%>' />
Middle Name: <asp:TextBox ID="txtMiddleName" runat="server"
Text='<%# Bind("MiddleName")%>' />
Last Name:
<asp:TextBox ID="TextBox5" runat="server"
Text='<%# Bind("LastName")%>' />
...
</EditItemTemplate>
</asp:FormView>
</div>
...
<asp:ObjectDataSource ID="srcPerson" runat="server" SelectMethod="GetPersonInfo" UpdateMethod="SavePersonInfo"
TypeName="BLL.Person">
<SelectParameters>
<asp:SessionParameter Name="personID" SessionField="personid" DefaultValue="0" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="firstName" Type="String" Direction="Input" DefaultValue="Fail 1!" />
<asp:Parameter Name="middleName" Type="String" Direction="Input" DefaultValue="Fail 2!" />
<asp:Parameter Name="lastName" Type="String" Direction="Input" DefaultValue="Fail 3!" />
</UpdateParameters>
</asp:ObjectDataSource>
在SavePerson中,参数值分别为“Fail 1!”,“Fail 2!”和“Fail 3!”。我也尝试过使用FormParameters,结果相同:
<asp:FormParameter Name="firstName" FormField="txtFirstName" Type="String" Direction="Input" DefaultValue="Fail 1!" />
<asp:FormParameter Name="middleName" FormField="txtMiddleName" Type="String" Direction="Input" DefaultValue="Fail 2!" />
<asp:FormParameter Name="lastName" FormField="txtLastName" Type="String" Direction="Input" DefaultValue="Fail 3!" />
我还尝试在字段名称之前加上“fvwPerson。”。我也试过处理ODS的Updating事件,但是e.InputParameters都以“Fail”开头。我真的以为我正在关注所有正确的例子,我做错了什么?请保存我不必调用DirectCast(fvwPerson.FindControl(“fieldName”),TextBox)。文本38次!谢谢......
编辑7/6/10:我可能应该提到我只有用于编辑的项目模板,而不是用于查看的项目模板(我觉得我不应该复制所有这些控件),并且作为FormView标签表示,编辑是其默认模式。这是我问题的潜在根源吗?