#asp.net #visual-studio-2010 #.net-4.0 #custom-server-controls
#asp.net #visual-studio-2010 #.net-4.0 #пользовательские серверные элементы управления
Вопрос:
Я создал серверный элемент управления, который отображает список флажков. Проблема в том, что когда я устанавливаю некоторые флажки и форму обратной передачи, все флажки снимаются. Вот мой класс управления сервером:
public class WeekControl : WebControl
{
public bool ShowCheckBoxs { get; set; }
public WeekControl()
{
ShowCheckBoxs = true;
Table = new Table();
Table.ID = "table1";
CheckBoxes = new CheckBox[7, 4];
Table.CssClass = "weekly";
}
protected override void OnInit(EventArgs e)
{
for (int i = 0; i < 6; i )
{
TableRow tr = new TableRow();
Table.Rows.Add(tr);
for (int j = 0; j < 4; j )
{
TableCell tc = new TableCell();
tr.Cells.Add(tc);
if (ShowCheckBoxs)
{
CheckBoxes[i, j] = new CheckBox();
CheckBoxes[i, j].ID = "ch" i.ToString() j.ToString();
tc.Controls.Add(CheckBoxes[i, j]);
}
}
}
}
public CheckBox[,] CheckBoxes;
public Table Table;
protected override void CreateChildControls()
{
Controls.Add(Table);
ChildControlsCreated = true;
base.CreateChildControls();
}
}
Есть идеи?
Ответ №1:
Возможно, CreateChildControls
это происходит после шага, который десериализует viewstate. Вы пробовали перейти Controls.Add(Table)
на OnInit
?
Вы можете найти статью MSDN о ASP.NET жизненный цикл страницы интересное чтение. Он упоминает CreateChildControls только в разделе комментариев.
Единственный комментарий на странице документации CreateChildControls предостерегает от переопределения метода. Если это вам поможет, угостите Роя Соливера пивом 🙂