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