.net FormView中的双向数据绑定不';表行使用runat=server时不工作

.net FormView中的双向数据绑定不';表行使用runat=server时不工作,.net,data-binding,objectdatasource,formview,.net,Data Binding,Objectdatasource,Formview,我有一个ObjectDataSource,设置如下: <asp:ObjectDataSource ID="AccountDataSource" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetAccountByAccountID" TypeName="AccountBLL" InsertMethod="RegisterAccount" UpdateMethod="Update

我有一个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函数。数据集中未将其设置为只读,并且在DropDownList中选择了正确的值

几个小时前,它还可以正常工作,只是突然停止了工作,没有任何可以解释的原因。我有另一个DropDownList控件,它实际上是相同的,工作正常

我能想到的唯一一件事是,我从不同的ObjectDataSource为DropDownList提取数据并尝试绑定该值,但在另一个DropDownList中也发生了同样的事情,而且其中一个似乎工作正常,这让我很不高兴

有没有办法解决这个问题?我已多次重新启动Visual Studio。我清除了缓存,重建了解决方案,区分了代码,并将DropDownList转换为标签,但没有骰子

是否有什么地方可以强制进行双向绑定,或者有什么地方可以查看EditItemTemplate中UpdateParameters和FormView控件之间的映射?我不需要将数据库中的字段重命名为iGroupID,是吗

除了没有将此字段的值传递给函数外,所有操作都正常。任何帮助都将不胜感激


编辑:在表行中,如果我取出runat=“server”,它将再次开始工作。所以,我的修正问题是:为什么?有办法解决这个问题吗?

我想这是因为post消息中的字段命名会发送回服务器。使用
runat=“server”
它在名称中获得另一个ID,因此服务器逻辑失败。。。我在回答那个尘封的问题,因为我也有同样的问题。。。删除
runat=“server”
有帮助。谢谢