2012-04-02 8 views
0

Все,Обновление пользовательского интерфейса из цикла: 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]; 
    } 
+0

Ваша разметка aspx и код-код кажутся почти не связанными друг с другом. Согласно вашему комментарию ниже, 'tmrUdp1' должен быть' tmr' и вызывать обработчик события 'tmr_Tick'. Однако этот обработчик событий обновляет метку, которая не существует в разметке aspx. Я предполагаю, что вместо этого должен быть 'ltlCount'? Не могли бы вы начать с фиксации вашей aspx или кода? –

+0

@GuthMD и CheckRaise, извинения за опечатки. Также должен быть доступен для чтения. –

+0

Можете ли вы объяснить обработчик btnUpload_Click? Откуда «линия»? Операции там выглядят довольно просто, и я ожидаю, что весь цикл, скорее всего, завершится менее чем за секунду. Вы хотите, чтобы он часто обращался к вашей странице? –

ответ

0

onTick свойство элемента управления таймера устанавливается в метод, который не существует. Вы можете переименовать метод tmr_Tick в свой код позади до tmrUdp1_Tick или установить свойство onTick на tmr_Tick

+0

Это опечатка этого обновленного управления таймером:

Смежные вопросы