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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Control ... must be placed inside a form tag with 
V
    Опции темы
Vit
Дата 30.4.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Динамически создаю таблицу и контролы в ней. Собственно код вот он:

Код

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
     Table t = new Table();
     Controls.Add(t);

     TableRow tr = new TableRow();
     t.Rows.Add(tr);

     TableCell tc = new TableCell();
     tr.Cells.Add(tc);

     Label l=new Label();
     l.Text="Test";
     tc.Controls.Add(l);

     CheckBox ch = new CheckBox();
     ch.Text = "Test";
     tc.Controls.Add(ch);
    }
}



Получаю ошибку
Control 'ctl04' of type 'CheckBox' must be placed inside a form tag with runat=server


Проблема в создании CheckBox. Исследования показали:

1. Label создаётся без проблем, проблемы возникают при создании CheckBox
2. Если CheckBox создавать прямо на форме то проблем нет:
     
Код

     CheckBox ch = new CheckBox();
     ch.Text = "Test";
     form1.Controls.Add(ch);
    

, но тогда они создаются не в таблице

3. Если таблицу создать в дизайнере, то проблем тоже нет, но мне надо создавать таблицу на лету. 

4. Добавление аттрибута runat к CheckBox, таблицеб строке и клетке не даёт эффекта 


И как быть?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Дрон
Дата 30.4.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 92



А если 16 строку заменить на:
Код
form1.Controls.Add(t);

Т.е. надо саму таблицу добавлять в форму, тогда естественно и твоё CheckBox окажется на форме. По-моему, всё дело в этом.

Это ограничение вытекает из способа передачи данных с html-страницы на сервер. Данные передаются путём отправки (submit) всех полей формы. Т.е. просто Label не отправляет никаких данных и может находиться в любом месте, а CheckBox должен передавать своё состояние и поэтому обязательно помещается внутрь формы.


--------------------
Да. Именно так.
PM   Вверх
Vit
Дата 30.4.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Дрон @  30.4.2007,  10:03 Найти цитируемый пост)
Т.е. надо саму таблицу добавлять в форму, тогда естественно и твоё CheckBox окажется на форме. По-моему, всё дело в этом.



А у меня она разве не в форму передаётся?  smile Я считал что класс формы по умолчанию...

Добавлено через 1 минуту и 55 секунд
Действительно так работает, а от какого же тогда класса я вызывал Controls.Add ?  smile 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Дрон
Дата 30.4.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 92



Цитата(Vit @  30.4.2007,  20:15 Найти цитируемый пост)
а от какого же тогда класса я вызывал Controls.Add ? 

От страницы вообще, т.е. Page.
И если посмотреть содержимое Page.Controls, то одним из них и будет твой form1.

Меня это поначалу тоже немного с толку сбивало, но в итоге всё логично -- ведь контролы (типа того же Label), могут находиться вне формы. Они вообще могут находится вне хтмл-ного тэга <body> smile


--------------------
Да. Именно так.
PM   Вверх
Vit
Дата 30.4.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Спасибо!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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