Добавить ASP управления в таблицу динамически - PullRequest
4 голосов
/ 02 февраля 2012

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

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

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

Ответы [ 3 ]

5 голосов
/ 02 февраля 2012

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

        Button b = new Button();
        c.Controls.Add(b);
2 голосов
/ 02 февраля 2012

Предполагается, что у вас есть пустой 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";
}
0 голосов
/ 02 февраля 2012

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

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

...