Все,Обновление пользовательского интерфейса из цикла: ASP.NET Webforms
У меня есть панель управления Update, которая содержит элемент управления меткой. У меня также есть Timer Control, интервал которого установлен в 1 секунду. Элемент управления таймером предполагает, что каждый раз, после каждой итерации цикла, каждый раз устанавливается текст элемента управления меткой со значением общедоступного свойства.
Однако в результате функциональность заключается в том, что после завершения всего цикла пользовательский интерфейс обновляется. Я хотел бы знать, что нужно делать/кодировать, чтобы убедиться, что элемент управления меткой обновлен со значением свойства _servername после каждой итерации цикла?
Heres мой код:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Timer ID="tmr" runat="server" Interval="1000" ontick="tmr_Tick">
</asp:Timer>
<div>
<asp:UpdatePanel ID="udp1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tmr" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label ID="lblInserts" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress runat="server" ID="udprg1" AssociatedUpdatePanelID="udp1"
DisplayAfter="10">
<ProgressTemplate>
<img src="media/ajaxloaderBlueLoading.gif" alt="ProgressImage" />
</ProgressTemplate>
</asp:UpdateProgress>
<div id="_asyncCallsMadeDiv"></div>
</div>
</form>
// КОД ЗА
public string ServerName
{
get { return _serverName; }
set { _serverName = value;}
}
protected void tmr_Tick(object sender, EventArgs e)
{
lblInserts.Text = ServerName;
}
protected void btnUpload_Click(object sender, EventArgs e)
{
//Loop through data
while((line = rdr.ReadLine()) != null)
{
string [] arrayline = line.Split(',');
ServerStatus s = new ServerStatus
{
ServerName = arrayline[0],
Purpose = arrayline[1],
Primary = arrayline[2],
Secondary = arrayline[3],
OS = arrayline[4],
MachineType = arrayline[5],
Comments = arrayline[6],
VMTools = arrayline[7],
TimeSettings = arrayline[8],
LastPatchDate = arrayline[9],
CARemoval = arrayline[10],
PLUpdate = arrayline[11],
DefaultGatewayChange = arrayline[12]
};
_serverName = arrayline[0];
}
Ваша разметка aspx и код-код кажутся почти не связанными друг с другом. Согласно вашему комментарию ниже, 'tmrUdp1' должен быть' tmr' и вызывать обработчик события 'tmr_Tick'. Однако этот обработчик событий обновляет метку, которая не существует в разметке aspx. Я предполагаю, что вместо этого должен быть 'ltlCount'? Не могли бы вы начать с фиксации вашей aspx или кода? –
@GuthMD и CheckRaise, извинения за опечатки. Также должен быть доступен для чтения. –
Можете ли вы объяснить обработчик btnUpload_Click? Откуда «линия»? Операции там выглядят довольно просто, и я ожидаю, что весь цикл, скорее всего, завершится менее чем за секунду. Вы хотите, чтобы он часто обращался к вашей странице? –