AAX - Problema

mercoledì 28 novembre 2007 - 15.08

kduhcm Profilo | Junior Member

Ciao ragazzi, sto cercando di fare una chat rudimentale con ajax per esercitarmi.
Ho messo un controllo ajax UpdatePanel con dei controlli dentro tra cui un bottone. Se clicco sul bottone mi aggiorna correttamente la textbox nell' UpdatePanel in 'ajax mode'. Vorrei pero' che la textbox fosse aggiornata anche in corrispondenza dell'evento tick del Timer, per visualizzare cosa scrivono altri utenti.
Il tick viene scatenato (me ne accorgo perche' perdo il focus da un controllo) ma non riesco ad aggiornare la textbox. Questo e' cio che scrivo in corrispondenza dell'evento

protected void TimerChat_Tick(object sender, EventArgs e)
{
txtLavagna.Text = Application["APPL_LAVAGNA"].ToString();
}

Vi allego anche il codice asp.net per completezza, anche se non serve credo.


<asp:Timer ID="TimerChat" runat="server" Interval="5000">
</asp:Timer>
<br />
<asp:UpdatePanel ID="upnMain" RenderMode="Block" UpdateMode="Always" runat="server">
<ContentTemplate>
<asp:Label id="lblUtentiConnessi" runat="server" Width="111px" ForeColor="#8080FF" Font-Bold="True">Utenti On-Line:</asp:Label><asp:Label id="lblNumConnessi" runat="server" Text="Label" ForeColor="#8080FF"></asp:Label> <BR /><asp:GridView id="GridView1" runat="server" ToolTip="Elenco utenti collegati al sito" DataSourceID="srcUtenti" CellPadding="4" BorderWidth="1px" BorderStyle="None" BorderColor="#3366CC" BackColor="White" AutoGenerateColumns="False">
<FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
<Columns>
<asp:BoundField DataField="User" HeaderText="User" SortExpression="User" />
<asp:BoundField DataField="IP" HeaderText="IP" SortExpression="IP" />
</Columns>
<RowStyle BackColor="White" ForeColor="#003399" />
<SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
<HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
</asp:GridView> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR />&nbsp;<asp:Label id="lblLavagna" runat="server" Width="226px" Text="Lavagna:" ForeColor="#8080FF"></asp:Label> <asp:TextBox id="txtLavagna" runat="server" Width="255px" Height="231px" Font-Size="Smaller" TextMode="MultiLine" ForeColor="White" Font-Bold="False" Enabled="False" BackColor="Black" AutoPostBack="True"></asp:TextBox><BR />&nbsp;<asp:TextBox id="txtMessLavagna" runat="server" Width="246px" ToolTip="Scrivi un messaggio." BackColor="LightSteelBlue"></asp:TextBox> <asp:Button id="btnLavagna" onclick="btnLavagna_Click" runat="server" Width="255px" Text="Invia" ToolTip="Cliccare per inviare il messaggio" OnClientClick="LavagnaClick(this)"></asp:Button><BR />&nbsp;<asp:Button id="btnRefreshLavagna" onclick="btnRefreshLavagna_Click" runat="server" Text="Refresh" Visible="False" ToolTip="Acquisisci il contenuto aggiornato (da altri utenti) della lavagna"></asp:Button> <asp:SqlDataSource id="srcUtenti" runat="server" SelectCommand="Select distinct Utente as &quot;User&quot;, IndirizzoIp as IP from LogAzioni a&#13;&#10;where DATEDIFF(n, DataOra, GETDATE()) < 2&#13;&#10;and len(Utente)>0&#13;&#10;and IndirizzoIp not in (select IndirizzoIp from LogAzioni b&#13;&#10;&#9;where DATEDIFF(n, DataOra, GETDATE()) < 2&#13;&#10; and (Utente = '' or Utente = null) and b.DataOra > a.DataOra)&#13;&#10;union&#13;&#10;Select distinct 'Ospite' as &quot;User&quot;, IndirizzoIp as IP from LogAzioni &#13;&#10;where DATEDIFF(n, DataOra, GETDATE()) < 2&#13;&#10;and (Utente = '' or Utente = null)&#13;&#10;and IndirizzoIp not in (&#13;&#10; Select distinct IndirizzoIp as IP from LogAzioni c &#13;&#10; where DATEDIFF(n, DataOra, GETDATE()) < 2&#13;&#10; and len(Utente)>0&#13;&#10; and IndirizzoIp not in (select IndirizzoIp from LogAzioni d&#13;&#10;&#9;where DATEDIFF(n, DataOra, GETDATE()) < 2&#13;&#10; and (Utente = '' or Utente = null) and d.DataOra > c.DataOra)&#13;&#10;)" ConnectionString="<%$ ConnectionStrings:MSSql20470ConnectionString %>">
</asp:SqlDataSource>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TimerChat"/>
</Triggers>
</asp:UpdatePanel>

Wamba Profilo | Expert

Ciao!
Prova a spostare il timer dentro l'updatepannel.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

kduhcm Profilo | Junior Member

ho provato ma non funziona...

Wamba Profilo | Expert

Hai provato a mettere un breakpoint nell'evento del timer lato server?
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

kduhcm Profilo | Junior Member

Risolto... deve stare fuori il Timer ma aveva preso l'evento del timer precedente... me ne sono accorto con il break ;-) grazie

Wamba Profilo | Expert

Prego figurati :)
Vorrei chairire, per chiunque legga questo thread, che il timer può stare fuori perchè l'hai registrato nei triggers.

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
blogs.dotnethell.it/Wamblog

kduhcm Profilo | Junior Member

...ora per non riesco a impostare il focus... curioso riesco a cambiare il testo ma non a impostare il focus nell'evento tick... non mi prende l'istruzione...

protected void TimerChat_Tick1(object sender, EventArgs e)
{
txtLavagna.Text = Application["APPL_LAVAGNA"].ToString();
txtMessLavagna.Focus();
}

Wamba Profilo | Expert

>protected void TimerChat_Tick1(object sender, EventArgs e)
> {
>txtLavagna.Text = Application["APPL_LAVAGNA"].ToString();
> txtMessLavagna.Focus();
> }

Sembra tutto a posto. Controlla di non avere altri elementi con il Focus settato oppure prova a farlo in javascript.
Altra cosa interessante "Qual'è l'elemento con il focus?"

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
blogs.dotnethell.it/Wamblog/

kduhcm Profilo | Junior Member

Nessuno, dopo il tick nessun controllo visibile ha il focus. Ho provato a settare il focus sia nell' evento tick che nel pageLoad (dove lo prende solo con i postback tradizionali).

Wamba Profilo | Expert

mmm
Potrebbe essere da imputare al postback parziale.
Prova a farlo in javascript.

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
blogs.dotnethell.it/Wamblog/

kduhcm Profilo | Junior Member

mmm... forse conviene aprire un nuovo post per questo...intanto chiudo questo.... grazie wamba :-)

Wamba Profilo | Expert

Prego, hai ragione siamo pesantemente OT
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
blogs.dotnethell.it/Wamblog/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5