Добавление элементов управления на страницу?

#c# #asp.net

#c# #asp.net

Вопрос:

 protected void Page_Load(object sender, EventArgs e)
{
    Button quote = new Button();
    Button reply = new Button();
    Button edit = new Button();
    Label UsersMessage = new Label();
    UsersMessage.Text = "Users Message: question was submitted";


    Table tabl = new Table();
    TableRow tablRow=new TableRow();
    TableCell tablCell=new TableCell();



    tablCell.Controls.Add(quote);
    tablCell.Controls.Add(reply);
    tablCell.Controls.Add(edit);
    tablCell.Controls.Add(UsersMessage);

    tablRow.Cells.Add(tablCell);
    tabl.Rows.Add(tablRow);
}
  

Я пытаюсь добавить таблицу со строкой, ячейкой с кнопками и меткой в ней. Почему ничего не добавляется, когда я запускаю страницу? (В исходном коде, когда я его просматриваю, ничего не добавлено)

Ответ №1:

Вы также должны добавить сам Table элемент управления в форму страницы:

 Page.Form.Controls.Add(tabl);
  

Комментарии:

1. Элемент управления ‘ctl02’ типа ‘Button’ должен быть размещен внутри тега формы с runat=server. — выдает мне исключение

2. @Dmitry, верно, поскольку в вашей таблице есть кнопки, ее следует добавить в форму страницы, а не на саму страницу. Ответ обновлен, извините за ошибку.

3. Спасибо, ваш ответ решил проблему. есть идеи о том, как я могу контролировать расположение всех элементов, которые я добавил внутри ячейки таблицы. я хочу, чтобы кнопки отображались в нижней части ячейки, а метка — в верхней части ячейки

4. @Dmitry, я бы сначала добавил надпись, затем либо оформил ее с помощью display: block; либо добавил <br /> элемент после нее, затем добавил кнопки.

5. я понял. итак, мне нужно просто применить некоторые css / html, чтобы все выглядело правильно.. Спасибо за помощь

Ответ №2:

вы не добавляете элементы управления на саму страницу 😉

 controlContainer.Controls.Add(tabl);
  

помогло бы

где controlContainer элемент управления, который вы создали в ASPX, похожий на asp:placeholder или asp:panel . Таким образом, вы можете определить местоположение, в котором элементы управления должны отображаться определенным образом.

важное примечание: однако, когда вы добавляете элементы управления таким образом, вы попадаете в область, вызывающую беспокойство. Если вы собираетесь использовать кнопки для postback , этот подход будет работать не совсем так, как показано выше. Пожалуйста, обратите внимание на термины Google / bing как asp.net page-lifecycle , viewstate eventwire control-id's и т.д. … здесь есть хороший учебник

Комментарии:

1. при добавлении элементов управления возникло исключение… Элемент управления ‘ctl02’ типа ‘Button’ должен быть размещен внутри тега формы с runat=server.

2. конечно: вы должны добавить атрибут runat=server к вашему тегу controlscontainer, чтобы: <asp:PlaceHolder runat="server" id="controlContainer" />

Ответ №3:

Вы не добавили таблицу в коллекцию элементов управления страницы.

 this.Controls.Add(tabl);
  

Или, если у вас есть конкретный элемент управления, к которому вы хотите добавить таблицу, используйте это.