Изменить видимость в DetailsView, обернутой в UpdatePanel C # - PullRequest
0 голосов
/ 11 января 2019

У меня есть подробное представление внутри UpdatePanel. Целью является то, что когда пользователь нажимает кнопку, чтобы вставить запись в базу данных, UpdateProgress покажет ожидающее сообщение. В конце обновления будет отображаться скрытая метка, показывающая конец обновления. Пока все хорошо, и в конце обновления сообщение ожидания исчезнет, ​​и будет показано сообщение конца.

но я хочу скрыть снова сообщение об окончании обновления, когда вставляется другая запись. Другими словами, я не хочу, чтобы оба сообщения показывались вместе. Я могу изменить видимость метки с ложного на истинное, но не могу вернуться к ложному.

Для этого я использую ItemInserted из подробного просмотра, чтобы изменить видимость на true (обновление выполнено), и ItemInserting, чтобы изменить его на false (обновление выполняется)

Кроме того, я вообще не могу изменить видимость, если размещаю ярлык за пределами панели обновления.

ASPX:

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="Id" DataSourceID="SqlDataSource1" DefaultMode="Insert" Height="50px" Width="125px" **OnItemInserting="DetailsView1_ItemInserting" OnItemInserted="DetailsView1_ItemInserted**">
    <Fields>
       Some Fields
    </Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=...>
       Some Parameters
</asp:SqlDataSource>
            **<asp:Label ID="Label1" runat="server" Text="Updated" Visible="False"></asp:Label>**
       </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
    <ProgressTemplate>
    <div class="PleaseWait">
        Database is Updating...
    </div>
    </ProgressTemplate>
</asp:UpdateProgress>

и код C #:

protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
    Label1.Visible = false;
    System.Threading.Thread.Sleep(2000);

}

protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
    Label1.Visible = true;
}
...