У меня есть подробное представление внутри 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;
}