Динамическое создание контролов на WEB-форме
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Динамическое создание контролов на WEB-форме Expand / Collapse
Автор
Сообщение
10.07.2006 12:13
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
В своем приложении я перехожу по ссылке с страницы 1.aspx на 2.aspx, имея в переменных сеанса параметр col_count=4.
Соответственно на странице 2.aspx должно появиться 4 контрола textbox последовательно. Значение параметра col_count переменная от 0 до 99.

С уважением,
Сообщ. #900369
10.07.2006 12:20
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
for (int i=0; i<col_count; i++)
{
TextBox tb = new TextBox();
...
Controls.Add(tb)
}
Сообщ. #900370
10.07.2006 13:46
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
Переделал в модуле vb (а не в теле страницы)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim i As Int16
For i = 0 To Session.Item("col_count")

Dim tb As TextBox = New TextBox

Controls.Add(tb)
Next
End Sub

Выдает ошибку:
Exception Details: System.Web.HttpException: Control '_ctl0' of type 'TextBox' must be placed inside a form tag with runat=server.

P.S. естесственно такая переменная сеанса есть=4
Сообщ. #900381
10.07.2006 13:58
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Ошибся немного. Их надо добавлять в коллекцию Controls серверной формы, а не самой страницы.

<form id="form1" runat="server">
...
</form>

Dim col_count As Integer, I As Integer
col_count = CType(Session.Item("col_count"), Integer)
For i = 0 To col_count
    Dim tb As TextBox = New TextBox
    ....
    form1.Controls.Add(tb)
Next

Сообщ. #900383
10.07.2006 14:09
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
этот блок в 2.aspx?
<form id="form1" runat="server">
...
</form>

а этот в 2.aspx.vb в событие page_load?
Dim col_count As Integer, I As Integer
col_count = CType(Session.Item("col_count"), Integer)
For i = 0 To col_count
Dim tb As TextBox = New TextBox
....
form1.Controls.Add(tb)
Next

Тогда не работает, он form1 не "видит"

С уважением,
Сообщ. #900386
10.07.2006 14:23
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Объяви переменную form1 в классе формы, чтобы среда исполнения ASP.NET тебе ее инициализировала. Код надо написать внутри объявления класса, вне методов.

Protected form1 As HtmlForm

или динамически найди элемент управления по его id. Пишем код внутри page_load

Dim form1 As HtmlForm
form1 = CType(FindControl("form1"), HtmlForm)

Сообщ. #900390
10.07.2006 14:33
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
Спасибо! Все получилось. Тема закрыта.
Сообщ. #900391
10.07.2006 18:38
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
Думал, что закрыта. А как тогда на динамически сформированый контрол повесить обработчик события? например:
'создаем кнопку
Dim back_btn As Button = New Button
back_btn.Text = "Вернуться"
titles_frm.Controls.Add(back_btn)
'как обработать событие onClick для кнопки?

И как определить положение на форме, т. е. поместить на страницу где уже есть контролы в определенное место?

С уважением,
Сообщ. #900431
10.07.2006 18:47
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Посмотри код, который генерирует Visual Studio при добавлении новых элементов управления на страницу. Из него все понятно станет.
Сообщ. #900433