Добавить ASP управления в таблицу динамически

Прямо сейчас у меня есть таблица ASP. Я могу просто добавить строки и ячейки в эту таблицу. То, что я хотел бы сделать, это вместо ячейки, просто отображающей текст, я хотел бы добавить элемент управления. Например, кнопка.

Прямо сейчас, моя первая мысль о том, как это сделать, будет просто поставить <ASP:Button ... как .Ttext атрибут ячейки таблицы. Но моя интуиция говорит мне, что это не сработает. Более того, я, вероятно, не смог добавить функцию для обработки нажатия кнопки.

Может ли кто-нибудь помочь направить меня в правильном направлении, как этого добиться?

3 ответа

Вам нужно добавить элемент управления в ячейку таблицы. Просто вызовите метод Controls.Add для ячейки и добавьте свой элемент управления. Ниже приведен краткий набросок, который должен указать вам правильное направление.

        Button b = new Button();
        c.Controls.Add(b);

Далее предполагается, что у вас есть пустой ASP: Таблица на вашей странице с некоторыми определенными строками (просто для шоу на самом деле).

protected void Page_Init(object sender, EventArgs e)
{
    foreach (TableRow row in this.Table1.Rows)
    {
        foreach (TableCell cell in row.Cells)
        {
            Button btn = new Button();
            btn.Text = "Some Button";
            btn.Click += new EventHandler(btn_Click);
            cell.Controls.Add(btn);
        }
    }
}

void btn_Click(object sender, EventArgs e)
{
    ((Button)sender).Text = "Just Clicked";
}

Вопрос зависит от того, что является источником для вашего контроля. Кроме того, самый эффективный способ сделать это - связать данные, даже если ваш источник данных Enumerable.Range() функция.

В противном случае вам нужно создать экземпляр ваших элементов управления и добавить их в коллекцию элементов управления ячейки таблицы, в которую они будут входить. Вы можете просто использовать += синтаксис для добавления обработчиков событий. Хитрость в том, что код для создания и добавления кнопки должен будет запускаться снова при каждой обратной передаче, и он должен запускаться до фазы page_load жизненного цикла asp.net.

Другие вопросы по тегам