powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Собственный TabControl проблема
6 сообщений из 6, страница 1 из 1
Собственный TabControl проблема
    #33633671
JAPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу TabControl. Столкнулся с такой проблемой:
Есть 2 класса TabStrip (унаследован от Control) и Tab (унаследован от View)

Собственно кусок кода (вызывается в CreateChildControls) построения контрола:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
if (TabItems.Count >  0 ) {
	TableRow row = new TableRow();
	
	_multiView = new MultiView();
	
	foreach (ITabItem item in TabItems) {
		if (item is Tab) {
			LinkButton button = new LinkButton();
			TableCell cell = new TableCell();
			
			button.Text = ((Tab)item).Label;
			button.CommandArgument = _multiView.Views.Count.ToString();
			button.Command += new CommandEventHandler(OnChangeTab);
			
			cell.Controls.Add(button);
			
			row.Cells.Add(cell);
			
			_multiView.Views.Add((Tab)item);
		}
	}
	
	_container.Rows.Add(row);
	
	row = new TableRow();
	row.Cells.Add(new TableCell());
	row.Cells[ 0 ].Controls.Add(_multiView);
	
	if (TabItems.Count >  1 )
		row.Cells[ 0 ].ColumnSpan = TabItems.Count;
	
	_container.Rows.Add(row);
	_multiView.ActiveViewIndex = SelectedIndex;
}

Обработчик OnChangeTab переключает содержимое контрола:
Код: plaintext
1.
2.
3.
4.
5.
private void OnChangeTab(object sender, CommandEventArgs e) {
	.........................
	_multiView.ActiveViewIndex = Int32.Parse((String)e.CommandArgument);
	.........................
}
проблема в этом:
Код: plaintext
1.
2.
3.
button.Text = ((Tab)item).Label;
button.CommandArgument = _multiView.Views.Count.ToString();
button.Command += new CommandEventHandler(OnChangeTab);
Для простоты: допустим что в OnChangeTab я сменю значение Label для текущей закладки, то после PostBack'а кнопка не сменит свое поле Text. Почему?
...
Рейтинг: 0 / 0
Собственный TabControl проблема
    #33634293
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, в код особенно не вникал, но сделаю предположение, что кнопка не меняет свою надпись потому, что ((Tab)item).Label еще ничему не равен.
...
Рейтинг: 0 / 0
Собственный TabControl проблема
    #33634429
JAPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хмм... Почему? Ведь в CreateChildControls дочерние контролы уже созданы и их ViewState загружен. Или я ошибаюсь?
...
Рейтинг: 0 / 0
Собственный TabControl проблема
    #33639428
Bug69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JAPHХмм... Почему? Ведь в CreateChildControls дочерние контролы уже созданы и их ViewState загружен. Или я ошибаюсь?

Чтобы быть в этом более уверенным, надо сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
		protected override void OnInit(EventArgs e)
		{
			this.EnsureChildControls();
			base.OnInit(e);
		}

...
Рейтинг: 0 / 0
Собственный TabControl проблема
    #33650636
JAPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы, я пошел другим путем использовав IPostBackDataHandler со всеми вытекающими последствиями. У меня ещё пара вопросов :)
1) есть закладки (Tab) и есть разделители (TabSeparator) унаследованы от базового класса (TabItem), соответственно контрол содержит колекцию этих элементов. Проблема в том, что в дизайнере когда добавляешь элементы они вроде как добавляются но в коде страницы пусто? Даже если написать код, а потом перейти в дизайнер, и попробовать что то сделать с колекцией то в результате в коде страницы все пропадает. Имеется в виду, что пропадают элементы коллекции . Куда копать? Может надо какой-то хитрый атрибут указать?
2) второй вопрос будет позже :)
...
Рейтинг: 0 / 0
Собственный TabControl проблема
    #33651300
JAPH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первый вопрос снят. Проблема решилась очень быстро - добавлением 3 символов :). По ошибке ночью написал базовым классом Control вместо WebControl. Второй вопрос ещё не знаю как сформулировать ;)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Собственный TabControl проблема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]