Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Само Обновляющаяся компонента, проблема с самообновлением 
V
    Опции темы
Edd
Дата 27.10.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Нужно чтоб компонента самообновлялась, через определённое время.
На форме ScriptManager, UpdatePanel в котором компонента

Проблема с перересовкой компоненты, как её вызвать в TimerProc (Код таймера)

Другие идеи принемаются.
Код

.........
protected override void OnInit(EventArgs e)
        {                 
           .....
           try
            {
                //Add Label
                LabelWithTimer = new Label();
                LabelWithTimer.ID = "lblLabelWithTimer";
                LabelWithTimer.Text = "";
                this.Controls.Add(LabelWithTimer);

                 //Add timer
                System.Threading.Timer t = new System.Threading.Timer(new TimerCallback(TimerProc));
                t.Change(0, TimerTick);
            }
            catch { }
            base.OnInit(e);
        }

        protected override void Render(HtmlTextWriter output)
        {
            try
            {
                ..............

                LabelWithTimer.Text = DateTime.Now.ToString();
                string tmpOutStr = BasicMask;
                tmpOutStr = tmpOutStr.Replace("<?Label?>", RenderToString(LabelWithTimer));

                output.Write(tmpOutStr);
            }
            catch { }

        }

        private static string GetText()
        {
            ......... Получаю разные тексты
        }

        private static void TimerProc(object state)
        {
            try
            {
                LabelWithTimer.Text = DateTime.Now.ToString();//GetText();

               //теперь должен както это отобразить
            }
            catch { }
        }

         private static string RenderToString(Control c)//vozrasaet kontroll kak stroku
        {
            StringBuilder sb = new StringBuilder();
            System.IO.StringWriter sw = new System.IO.StringWriter(sb);
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            c.RenderControl(htw);
            return sb.ToString();
        }


Render(HtmlTextWriter output) вызвать не получается, так как он не может быть static
PM MAIL   Вверх
Idsa
Дата 27.10.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Ну уверен, что правильно понял вопрос... но если Вам нужно отобразить новые данные, то их нужно просто занести в контролы, которые находятся в UpdatePanel.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Edd
Дата 27.10.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Цитата

если Вам нужно отобразить новые данные, то их нужно просто занести в контролы, которые находятся в UpdatePanel

Добавил Properties - TextToShow - где текст который отоброжается.
По буттону кликая и меная пропертиес, всё ОК. Но мне нужно чтоб контрол сам менял себе текст.

Следующим образом это не происходит.
Код

try
                {
                   lwLabelWithTimer contr = (lwLabelWithTimer)Page.FindControl(this.ID);
                    contr.TextToShow = DateTime.Now.ToString();
                }
                catch{}


Это сообщение отредактировал(а) Edd - 27.10.2008, 15:37
PM MAIL   Вверх
Edd
Дата 27.10.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Проблема решина, надобыло использовать другой таймер  smile 
        
Код

........
protected override void OnInit(EventArgs e)
        {
..........        
            try
            {
               //Add Label
                LabelWithTimer = new Label();
                LabelWithTimer.ID = "lblLabelWithTimer";
                LabelWithTimer.Text = "";
                this.Controls.Add(LabelWithTimer);

                //Add timer
                timer = new System.Web.UI.Timer();
                timer.ID = "idTimerShowText";
                timer.Tick += new EventHandler<EventArgs>(timer_Tick);
                timer.Interval = TimerTick;
                this.Controls.Add(timer);
            }
            catch { }

            base.OnInit(e);
        }
.............
protected void timer_Tick(object sender, EventArgs e)
        {
            LabelWithTimer.Text = GetText();
        }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.