我有一个 ObjectDataSource 设置如下:
<asp:ObjectDataSource ID="AccountDataSource" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetAccountByAccountID" TypeName="AccountBLL" InsertMethod="RegisterAccount" UpdateMethod="UpdateAccount">
<SelectParameters>
<asp:QueryStringParameter Name="iAccountID" QueryStringField="iAccountID" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="sAccountname" Type="String" />
<asp:Parameter Name="sPassword" Type="String" />
<asp:Parameter Name="sConfirmPassword" Type="String" />
<asp:Parameter Name="sEmailAddress" Type="String" />
<asp:Parameter Name="sConfirmEmailAddress" Type="String" />
<asp:Parameter Name="sDisplayName" Type="String" />
<asp:Parameter Name="sRealName" Type="String" />
<asp:Parameter Name="sSignature" Type="String" />
<asp:Parameter Name="iTimezone" Type="Int32" />
<asp:Parameter Name="iGuestAccountID" Type="Int32" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="sAccountname" Type="String" />
<asp:Parameter Name="sPassword" Type="String" />
<asp:Parameter Name="sRealName" Type="String" />
<asp:Parameter Name="sDisplayName" Type="String" />
<asp:Parameter Name="sEmailAddress" Type="String" />
<asp:Parameter Name="sSignature" Type="String" />
<asp:Parameter Name="bIsActive" Type="Boolean" />
<asp:Parameter Name="iTimeZoneID" Type="Int32" />
<asp:Parameter Name="iPrimaryGroup" Type="Int32" />
<asp:Parameter Name="original_iAccountID" Type="Int32" />
</UpdateParameters> </asp:ObjectDataSource>
<asp:ObjectDataSource ID="GroupDataSource" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetGroups" TypeName="GroupBLL">
</asp:ObjectDataSource>
在页面上的 FormView 中,在 EditItemTemplate 中,我声明了以下内容:
<tr id="primaryGroupRow" runat="server">
<td class="Fieldname">Primary Group:</td>
<td><asp:DropDownList ID="iPrimaryGroupDropDownList" runat="server" DataSourceID="GroupDataSource" CssClass="PageText"
DataTextField="sGroupName" DataValueField="iGroupID" SelectedValue='<%# Bind("iPrimaryGroup") %>'></asp:DropDownList></td>
</tr>
我遇到的问题是,当 AccountBLL 中的 UpdateAccount 方法触发时,iPrimaryGroup 字段始终设置为零。如果我为此检查 DropDownList,它似乎运行正常。出于某种原因,它只是没有将这个值传递回 UpdateAccount 函数。在DataSet中没有设置为ReadOnly,在DropDownList中选择了正确的值。
几个小时前它工作得很好,但它突然无缘无故停止工作。我有另一个 DropDownList 控件,它几乎完全相同,工作正常。
我唯一能想到的是,我从不同的 ObjectDataSource 中为 DropDownList 提取数据并尝试绑定值并不高兴,但是在另一个 DropDownList 中也发生了同样的事情,而且似乎正在工作适当地。
关于如何解决这个问题的任何想法?我已经多次重新启动 Visual Studio。我已经清除了我的缓存,我已经重建了解决方案,我已经区分了代码,并且我已经将 DropDownList 转换为标签,但没有骰子。
有什么地方可以强制进行双向绑定,或者有什么地方可以查看 EditItemTemplate 中 UpdateParameters 和 FormView 控件之间的映射是什么?我不需要将数据库中的字段重命名为 iGroupID 吗?
除了这个字段的值没有传递给函数之外,一切似乎都工作正常。任何帮助将不胜感激。
编辑:在表格行中,如果我取出 runat="server",它会再次开始工作。所以,我修改后的问题是:为什么?有没有解决的办法?