FormView теряет данные после второго события onCommand - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь понять, почему formview теряет данные, если я нажимаю кнопку, которая заполняет их во 2-й раз.

У меня есть повторитель с кнопкой изображения с командой, которая устанавливает значение ID для скрытого поля и вида формыавтоматически связывается со значением в скрытом поле.В общем, я нажимаю кнопку, и скрытое поле получает значение, а форма просмотра связывается с данными.Что не имеет смысла, если я нажимаю второй раз на кнопку, данные исчезают из формы просмотра?

это где я связываю форму просмотра

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();                    
        }
    }
}

sqldatasource

<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>

Поэтому я пытаюсь привязать вид формы непосредственно из codebehind после того, как hiddenfield получит значение и решит проблему.Но есть ли другой подход к этому?Я пытаюсь уменьшить количество кода в коде позади.

ОБНОВЛЕНИЕ:

Я выяснил, что делает потерю данных при просмотре формы, если fieldset отключен, после нажатия кнопки во второй раз, когда данные исчезают,Если я установлю текстовое поле только для чтения, оно не исчезнет

...