首页 > 解决方案 > 第二次 onCommand 事件后 FormView 丢失数据

问题描述

如果我第二次单击填充它的按钮,我试图了解为什么 formview 会丢失数据。

我有一个带有 imagebutton 的中继器,它带有将 ID 值设置为隐藏字段的命令,并且 formview 由隐藏字段上的值自动绑定。所以基本上我单击按钮,隐藏字段获取值,formview 与数据绑定。什么没有意义,如果我第二次点击按钮,数据就会从表单视图中消失?

这是我绑定formview的地方

protected void rptADefinicaoExtrusao_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        if (e.CommandName == "Completar" && e.CommandArgument.ToString() != "")
        {
            int id = Convert.ToInt32(e.CommandArgument);                 
            hdfRegistoID.Value = id.ToString();                    
        }
    }
}

sql数据源

<asp:SqlDataSource
    ID="sdsADefinicao"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:ValidacaoFormas_ConnectionString %>"
    UpdateCommand="sp_UPDATE_ADefinicao_Extrusao"
    UpdateCommandType="StoredProcedure"
    OnUpdated="sdsADefinicao_Updated"
    SelectCommandType="StoredProcedure"
    SelectCommand="sp_SELECT_ADefinicao">

    <SelectParameters>
        <asp:ControlParameter ControlID="hdfRegistoID" Name="RegistoID" Type="Int32" />
    </SelectParameters>

    <UpdateParameters>

        <asp:ControlParameter ControlID="fvADefinicao" Name="ID_Registo" Type="Int32" />
        <asp:Parameter Name="Base_Cru" Type="String" />
        <asp:Parameter Name="Linha_Cru" Type="String" />
        <asp:Parameter Name="Diametro_Cru" Type="Decimal" />
        <asp:Parameter Name="Espessura_Cru" Type="Decimal" />
        <asp:Parameter Name="Comprimento_Cru" Type="Decimal" />
        <asp:Parameter Name="Marcacao_Continua_Cru" Type="String" />
        <asp:Parameter Name="ID" Type="Int32" Direction="Output" />
    </UpdateParameters>
</asp:SqlDataSource>

我的表单视图基本上是为了保持简短

<asp:FormView
    runat="server"
    ID="fvADefinicao"
    DataKeyNames="ID_Registo"
    DataSourceID="sdsADefinicao"
    DefaultMode="Edit"
    HorizontalAlign="Center"
    OnItemUpdated="fvADefinicao_ItemUpdated"
    Style="width: 100%; max-width: 1200px;">

    <EditTemplate>

        Stuff...

    </EditTemplate>
</asp:FormView>

因此,在 hiddenfield 获取值并解决问题后,我尝试直接从 codebehind 对 formview 进行数据绑定。但是还有另一种方法吗?我正在尝试减少代码隐藏的代码量。

更新:

我发现是什么导致表单视图丢失数据,如果字段集被禁用,在第二次单击按钮后数据消失。如果我将文本框设置为只读它不会消失

标签: c#asp.netsqldatasourceformview

解决方案


推荐阅读