#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);
Или, если у вас есть конкретный элемент управления, к которому вы хотите добавить таблицу, используйте это.