Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Собственный TabControl проблема / 6 сообщений из 6, страница 1 из 1
29.03.2006, 21:20
    #33633671
JAPH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собственный TabControl проблема
Пишу 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
30.03.2006, 10:18
    #33634293
Galant
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собственный TabControl проблема
Честно говоря, в код особенно не вникал, но сделаю предположение, что кнопка не меняет свою надпись потому, что ((Tab)item).Label еще ничему не равен.
...
Рейтинг: 0 / 0
30.03.2006, 11:04
    #33634429
JAPH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собственный TabControl проблема
Хмм... Почему? Ведь в CreateChildControls дочерние контролы уже созданы и их ViewState загружен. Или я ошибаюсь?
...
Рейтинг: 0 / 0
02.04.2006, 02:58
    #33639428
Bug69
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собственный TabControl проблема
JAPHХмм... Почему? Ведь в CreateChildControls дочерние контролы уже созданы и их ViewState загружен. Или я ошибаюсь?

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

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

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


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