PDA

Просмотр полной версии : Динамические кнопки


lirien
20.11.2007, 06:40
Добрый день (доброе время суток),

Программирую на C#/ASP.NET 2.0..
VisualStudio у меня нет, потому программирую на MS WebMatrix,
а чаще всего вообще в редакторе фара с подсветкой синтаксиса..


Проблема:
Выбираю из базы пункты меню, их может быть самое разное количество..
Допустим, от 0 до 255.
По результатам выборки в цикле забиваю пункты меню в таблицу, в виде LinkButton.
По каждому пункту меню нужно показать соответствующий текст.
Получается, что нужно назначить каждой кнопке свой собственный обработчик
события "Click", я не знаю как так сделать.
Или создать 1 функцию обработчик и назначить ее всем кнопкам, но при этом
как-то передавать в нее параметр, идентифицирующий именно нажатую кнопку.
Как, я тоже не пойму.. (передавал, но попытки оказались неудачными)

Вот что на данный момент у меня есть и работает (но обработчик события Click один для всех и не понять какая кнопка нажата):

LinkButton[] lbButton = new LinkButton[254];
while(dbReader.Read())
{
row = new TableRow();
cell = new TableCell();
cell.Wrap = false;

lbButton[count] = new LinkButton();
lbButton[count].Click += lbButton_Click;
lbButton[count].Text = dbReader["name"].ToString();
cell.Controls.Add(lbButton[count]);

row.Cells.Add(cell);
mainGrid.Rows.Add(row);
count++;
}

lirien
20.11.2007, 07:44
Собсно.. заработало..

Значит переменную типа object можно привести к типу объкта, который мы
используем (в данном случае LinkButton) и тогда можно забрать параметры
конкретного объекта (на котором и было вызвано событие Click)
А если создать дочерний класс от LinkButton, то можно туда засунуть параметр,
идентифицирующий конкретную кнопку..

jenik
14.05.2008, 13:36
видел статью про динамические контролы.
http://www.steamstudios.3dn.ru/
может поможет.
Editable Dynamic controls