更改封装在UpdatePanel C#中的DetailsView中的可见性

时间:2019-01-11 16:58:14

标签: c# ajax webforms updatepanel detailsview

我在UpdatePanel中有一个detailsiview。目标是当用户单击按钮将记录插入数据库时​​,UpdateProgress将显示一条等待消息。在更新结束时,将显示一个隐藏标签,显示更新结束。到目前为止,一切都很好,并且在更新结束时,等待消息将消失,并且将显示结束消息。

但是当要插入另一个记录时,我想再次隐藏更新消息的结尾。换句话说,我不希望这两个消息一起显示。我可以将标签的可见性从false更改为true,但是无法将其恢复为false。

为此,我使用detailsview的ItemInserted将可见性更改为true(已完成更新),并使用ItemInserting将其更改为false(正在进行更新)

此外,如果我将标签放置在updatepanel之外,则根本无法更改可见性。

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

0 个答案:

没有答案