Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Простой композитный контрол не работает. / 2 сообщений из 2, страница 1 из 1
17.11.2006, 01:21
    #34135083
Renziglov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой композитный контрол не работает.
Привет.
Помогите заставить контрол работать. Сценарий следующий:public class IDTtb : Control, INamingContainer //, IPostBackDataHandler
{
private TextBox tb = null;
private Calendar cl = null;
private Button cbutton = null;
public IDTtb()
{
tb = new TextBox(); tb.ID = "privatetb";
cl = new Calendar();
cl.Visible = false;
cbutton = new Button();
...
}
protected override void CreateChildControls()
{

tb.EnableViewState = true;
ub.EnableViewState = true;
cl.EnableViewState = true;

Controls.Add(tb);
Controls.Add(cbutton);
Controls.Add(cl);

cbutton.Click += new EventHandler(clClick);
}
//Ну и наконец
public void clClick(Object sender, EventArgs e)
        {
            Calendar cl1 = (Calendar)Controls[2];
            this.EnsureChildControls();
            cl1.Visible = !cl1.Visible;
            if (cl1.Visible)
            {...            }
           
        }
 
 
Т.е. это строка редактирования даты. Нажимаем на кнопку cbutton -вываливается календарь. Нажимаем опять - он должен исчезнуть. Но исчезает он не всегда, а через раз. Или вообще не исчезает (код, помеченный желтым, никогда не получает управления).
Если cl.Visible впихнуть во Вьюстайт, работает также. Т.е. от случая к случаю. Т.е. не работает.
В чем проблема?
Спасибо.
...
Рейтинг: 0 / 0
17.11.2006, 08:14
    #34135230
Бодрый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой композитный контрол не работает.
Возможно, так сработает

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
    public class IDTtb : Control, INamingContainer //, IPostBackDataHandler
    {
        #region TextBox

        /// <summary>
        /// Внутренняя переменная, содержащая ссылку на TextBox
        /// </summary>
        private TextBox _textBox = null;

        /// <summary>
        /// Свойство, позволяющее осуществлять доступ к TextBox.
        /// Если TextBox отсутствует создает его и нициализирует некоторые его свойства.
        /// (можно сделать internal, protected или private в зависимости от условий задачи)
        /// </summary>
        public TextBox TextBox
        {
            get
            {
                if (_textBox == null)
                {
                    _textBox = new TextBox();
                    _textBox.EnableViewState = true;
                    _textBox.ID = "privatetb";
                }
                return _textBox;
            }
        }

        #endregion

        #region Calendar

        /// <summary>
        /// Внутренняя переменная, содержащая ссылку на Calendar
        /// </summary>
        private Calendar _calendar;

        /// <summary>
        /// Свойство, позволяющее осуществлять доступ к Calendar.
        /// Если Calendar отсутствует создает его и нициализирует некоторые его свойства.
        /// (можно сделать internal, protected или private в зависимости от условий задачи)
        /// </summary>
        public Calendar Calendar
        {
            get
            {
                if (_calendar == null)
                {
                    _calendar = new Calendar();
                    _calendar.EnableViewState = true;
                    _calendar.Visible = false;
                }
                return _calendar;
            }
        }

        #endregion

        #region Button

        /// <summary>
        /// Внутренняя переменная, содержащая ссылку на Button
        /// </summary>
        private Button _button;

        /// <summary>
        /// Свойство, позволяющее осуществлять доступ к Button.
        /// Если Button отсутствует создает его и нициализирует некоторые его свойства.
        /// (можно сделать internal, protected или private в зависимости от условий задачи)
        /// </summary>
        public Button Button
        {
            get
            {
                if (_button == null)
                {
                    _button = new Button();
                    _button.EnableViewState = true;
                    _button.Click += new EventHandler(Button_Click);
                }
                return _button;
            }
        }

        /// <summary>
        /// Обработчик события Click элемента управления Button.
        /// </summary>
        private void Button_Click(object sender, EventArgs e)
        {
            Calendar.Visible = !Calendar.Visible;
            if (Calendar.Visible)
            {
                // ....
            }
        }

        #endregion

        #region Overrides

        /// <summary>
        /// После вызова базового метода OnInit, убеждаемся в том, что все дочерние контролы созданы.
        /// (Впрочем, это можно делать и в начале OnLoad)
        /// </summary>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            EnsureChildControls();
        }

        /// <summary>
        /// После вызова базового метода CreateChildControls, добавляем дочерние элементы управления.
        /// </summary>
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            Controls.Add(TextBox);
            Controls.Add(Button);
            Controls.Add(Calendar);
        }

        #endregion
    }

...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Простой композитный контрол не работает. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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