При Web-строительстве очень часто приходится работать с таблицами для различных целей. В данном примере продемонстрируем, как с помощью двух раскрывающихся списков DropDownList можно заказывать необходимое число рядов и столбцов в таблице.

Таблица с переменным числом ячеек, управляемая двумя раскрывающимися списками

Программируя поставленную задачу, запустим систему VB2010 и создадим новый проект шаблона Empty ASP.NET Web Application, назовем его tab.sln. К текущему проекту добавим Web-форму. Для этого в пункте меню Project выберем команду Add New Item и в появившемся окне дважды щелкнем шаблон Web Form.

Далее в конструкторе WebForm1.aspx из панели элементов Toolbox в проектируемую форму перенесем элемент управления Table, два раскрывающихся списка DropDownList, две метки Label и командную кнопку Button. Теперь, используя, например, контекстное меню проекта Web-формы, выбираем команду View Code, попадаем на вкладку файла программной поддержки WebForm1.aspx.vb. В листинге ниже приведен соответствующий программный код.

[vb]‘ Таблица с переменным числом ячеек, управляемая двумя
‘ раскрывающимися списками. Web-страница позволяет с помощью
‘ двух раскрывающихся списков DropDownList заказать необходимое
‘ число рядов и столбцов в таблице, а затем строить заказанную
‘ таблицу.
PublicClass WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.Load
Page.Title ="Укажите размерность таблицы"
If Page.IsPostBack = True Then Exit Sub
‘ Заполнять выпадающий список необходимо
‘ при первой загрузки страницы IsPostBack = False,
‘ иначе будут добавляться новые пункты в выпадающем
‘ списке при каждой перегрузке страницы:
DropDownList1.Items.Add("1")
DropDownList1.Items.Add("2")
DropDownList1.Items.Add("3")
DropDownList2.Items.Add("1")
DropDownList2.Items.Add("2")
DropDownList2.Items.Add("3")
Table1.Caption = "Название таблицы"
Table1.CaptionAlign = TableCaptionAlign.Right
Table1.ToolTip ="Укажи количество рядов и столбцов и нажми кнопку"
Table1.BorderStyle = BorderStyle.Solid
Table1.GridLines = GridLines.Both
Label1.Text ="Кол-во строк"
Label2.Text ="Кол-во столбцов"
Button1.Text = "Обновить таблицу"
End Sub
Private Sub Button1_Click(ByVal senderAs Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim i, j AsInteger
For i = 1 ToInt32.Parse(DropDownList1.SelectedItem.Value)
Dim РЯДAsNew TableRow
For j = 1 ToInt32.Parse(DropDownList2.SelectedItem.Value)
Dim ЯЧЕЙКАAsNew TableCell
ЯЧЕЙКА.Text = "Ряд " & i & ", Кол " & j
ЯЧЕЙКА.HorizontalAlign = HorizontalAlign.Center
РЯД.Cells.Add(ЯЧЕЙКА)
Next
Table1.Rows.Add(РЯД)
Next
End Sub
EndClass[/vb]

Как видно из программного кода, при загрузке страницы Page_Load происходит заполнение значениями раскрывающихся списков DropDownList, причем заполнение осуществляется только при первоначальной загрузке страницы, когда IsPostBack = False. Если бы мы не предусмотрели обход присвоения начальных значений при IsPostBack = True, то значения в списке добавлялись бы каждый раз при очередной перезагрузке страницы. Заметим, что мы могли бы и не контролировать IsPostBack, если бы присвоение начальных значений выполнили бы в процедуре обработки события инициализации страницы Page_PreInit (в версии VB.NET это событие называлось Page_Init).

Свойства других элементов управления также инициализированы при обработке события загрузки Web-страницы Page_Load. Мы могли бы это сделать в конструкторе, но, для удобства читателя, приводим их в программном коде. Назначения этих свойств очевидны и не требуют дополнительных комментариев.

При обработке события щелчок на кнопке Обновить таблицу имеем два вложенных цикла. Параметры обоих циклов i и j изменяются от 1 до значения, выбранного пользователем в соответствующем раскрывающемся списке. Метод Int32.Parse пространства имен System конвертирует строку из соответствующего свойства объекта DropDownList В переменную типа Integer. Внешний цикл перебирает ряды таблицы, а внутренний — ячейки таблицы. В теле внешнего цикла очередная итерация создает новый объект РЯД класса TableRow, аналогично в теле внутреннего цикла каждый раз создается новый Объект ЯЧЕЙКА класса TableCell.

Для старта созданного проекта нажмем клавишу. На этом можно закончить статью про создание таблицы в Vusial Basic с задаваемым количество ячеек в столбцах и строках.