none
Как выводить лист сообщений в чате? RRS feed

  • Вопрос

  • Я пишу чат. Чат организовал с помощью двух фреймов. В одном фрейме отображается лист сообщений. В другом фрейме содержится тексбокс для отправки сообщений в бд. Я не могу разобраться, как правильно выводить лист сообщений чата? Нужно ли использовать определенный элемент управления? Вот, что делал я, но возможно сделал глупо. Я выводил текст в div элемент. Но после каждой отправки сообщения, предыдущее сообщение стирается текущим. Я не могу понять, как сделать чтобы не стирались предыдущие сообщения. Или возможно, мой способ вывода сообщений чата не правильный. Если так, то как сделать нужно? Привожу свой код, того, что у меня получилось. Заранее спасибо за помощь.
    asp.net разметка
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Messages.aspx.cs" Inherits="webchat.Messages" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title>    <meta http-equiv="refresh" content="5"/></head><body>    <form id="form1" runat="server">    <div id="chatMenu" runat="server">            </div>    </form></body></html>


    Код С#
        public partial class Messages : System.Web.UI.Page    {        public static string chatMessage = string.Empty;//временная переменная для хранения сообщения чата        protected void Page_Load(object sender, EventArgs e)        {            Message message = new Message();            message.ReadFromDataBase();//считываем сообщения из БД чата            if (message.ReceivedDate != Convert.ToDateTime("01.01.0001 0:00:00") && message.ReceivedMessage != null)//Если строка из БД с сообщением не пустая, выводим сообщение            {                chatMessage = string.Empty;                chatMenu.InnerHtml = string.Format("{0}: {1}", message.ReceivedDate, message.ReceivedMessage);//записываем сообщение в div тег с id chatMenu                chatMessage = string.Format("{0}: {1} <br />", message.ReceivedDate, message.ReceivedMessage);//записываем сообщение во временную переменное            }            else//Иначе выводим текущее сообщение. Если отсутсвует эта строка, после каждого обновления страницы будет выводится пустое сообщение            {                chatMenu.InnerHtml = chatMessage;            }            message.DeleteMessageFromDb();//Удаляем строку с сообщением        }    

    5 августа 2012 г. 21:03

Ответы

  • У Вас подход заранее выбран неверно. Чтобы не быть многословным, вот начальный проект. Своего рода база, движок. Начните его изучать, модернезировать, или переносить идеии и часть кода в Ваш проект.
    • Предложено в качестве ответа YatajgaEditor 8 августа 2012 г. 11:55
    • Помечено в качестве ответа YatajgaEditor 14 августа 2012 г. 4:54
    7 августа 2012 г. 6:17
    Модератор

Все ответы

  • Элемент div не относится к контролам ASP.NET, чтобы иметь возможность сохранять данные при постбэке используйте серверный контрол (runat="server").
    6 августа 2012 г. 5:28
    Модератор
  • я использовал серверный контрол (runat="server"). У меня это в коде выше есть.
    6 августа 2012 г. 8:07
  • У Вас подход заранее выбран неверно. Чтобы не быть многословным, вот начальный проект. Своего рода база, движок. Начните его изучать, модернезировать, или переносить идеии и часть кода в Ваш проект.
    • Предложено в качестве ответа YatajgaEditor 8 августа 2012 г. 11:55
    • Помечено в качестве ответа YatajgaEditor 14 августа 2012 г. 4:54
    7 августа 2012 г. 6:17
    Модератор