в настоящее время у меня есть окно чата на веб-форме asp.net
Сейчас я использую скрипт-менеджер
Таймер, панель обновления и триггер
Обновление панели установлено на условный.
Триггер установлен с таймером.
Каждые несколько секунд. Таймер запускает timer_tick, проверяет базу данных sql на наличие нового сообщения и обновляет панель обновления.
Моя проблема в том, что панель обновления обновляется каждые несколько секунд, независимо от наличия новых сообщений.
В коде позади, Как мне сделать только обратную передачу, если сделано условие. Это потому, что мой триггер установлен на таймер? Я проверил это. Даже если метод таймера полностью пуст. Он по-прежнему обновляет панель обновления.
Есть ли способ в методе таймера для принудительного запрета обратной передачи?
Можно ли заставить поток на стороне клиента проверять базу данных сообщений чата, а затем обновлять панель обновления, если выполняется условие?
Спасибо.
Проблема заключается в том, ставлю ли я условный или нет .. Timer1_Tick () всегда обновляет панель обновления.
В коде позади
protected void Timer1_Tick(object sender, EventArgs e)
{
if (All_Panel.Enabled)
{
SQL DB = new SQL();
if (DB.IsCustomerOnline())
{
SessionID = DB.GetSessionID();
if (SessionID.CompareTo("") != 0)
{
if (!C_BT_Message.Enabled)
{
DB.AddNewMessage(Request.UserHostAddress, "Connected Customer: " + SessionID, SessionID, "Admin");
C_BT_Message.Enabled = true;
}
}
else
{
C_BT_Message.Enabled = false;
}
}
List<string> li = DB.GetMessages(DB.GetSessionID());
if (TotalRow != li.Count && li.Count > 0)
{
try
{
foreach (string s in li)
{
// CreateDiv(s, "ForUser");
CreateDiv(GetDate(s) + "<br />" + GetMessage(s), GetIdentity(s).CompareTo("Customer") == 0 ? "ForUser" : "ForAdmin");
}
}
catch (Exception err)
{
}
}
TotalRow = li.Count;
}
}
Ниже aspx.
<asp:Timer ID="Timer1" runat="server" Interval="3000" OnTick="Timer1_Tick"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<div id="chat_box" runat="server" class="C_chat">
<div id="C_ChatAdmin" runat="server" class ="C_ChatMessage">
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>