Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание своей компоненты, type=button должна вызывать функцию 
V
    Опции темы
Edd
Дата 28.1.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Создаю свой компаненту. (*.cs)
Есть 3 кнопки.
Код

protected override void Render(HtmlTextWriter output)
{
.....
outputQuest += "<input TYPE=Button runat='server'  id='Back' OnClientClick ='ButtonBack_Click()' value='Back'/>";
....
output.Write(outputQuest);
}

Как сделать чтобы у этого Button вызывалавь 'ButtonBack_Click()'?
PM MAIL   Вверх
Mymik
Дата 28.1.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Если тебе нужно реализовать стандартную кнопку, которая будет делать PostBack данных, то лучше реализуй это через добавление экземпляра Button в коллекцию this.Controls и тогда у тебя получится что-то типа

Код

protected override void Render(HtmlTextWriter output)
{
outputQuest += "bla-bla-bla";
output.Write(outputQuest);
base.Render(output);
}

Так ты сделаешь все что тебе нужно для своего контрола, плюс ко всему еще и после всего отрендарятся все Child Control'ы у данного контрола.

Ну а если тебе все же хочется через строку все это делать, тогда нужно немного подсмотреть в html учебник, и там ты увидишь, что у html input'а нет атрибута runat="server" и нет OnClientClick И твой контрол имеет вот такое вот отличное вид -->>
Код

protected override void Render(HtmlTextWriter output)
{
outputQuest += "<input type=\"button\" id=\"Back\" onclick=\"ButtonBack_Click()\" value=\"Back\"/>";
output.Write(outputQuest);
}



Это сообщение отредактировал(а) Mymik - 28.1.2008, 19:39


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Edd
Дата 29.1.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Цитата

реализуй это через добавление экземпляра Button в коллекцию this.Controls 

 smile , что то не получается, пробовал следующим образом:
Код

Button ButtonBack = new Button();
                    ButtonBack.ID = "ButtonBack";
                    ButtonBack.Text = "Back";
                    ButtonBack.Click += new EventHandler(ButtonBack_Click);
                    Controls.Add(ButtonBack);

Хочется увидеть пример добавления Button в "<tr><td>Сюда</td><tr>"
 smile 
PM MAIL   Вверх
Mymik
Дата 30.1.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(Edd @  29.1.2008,  17:44 Найти цитируемый пост)
Хочется увидеть пример добавления Button в "<tr><td>Сюда</td><tr>"

Код

        Table table = new Table();
        TableRow row = new TableRow();
        TableCell cell = new TableCell();
        
        Button ButtonBack = new Button();
        ButtonBack.ID = "ButtonBack";
        ButtonBack.Text = "Back";
        ButtonBack.Click += new EventHandler(ButtonBack_Click);
        cell.Controls.Add(ButtonBack);
        row.Cells.Add(cell);
        table.Rows.Add(row);
        this.Controls.Add(table);



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Edd
Дата 30.1.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Не получается (Буилдит, но кнопку не хочет показывать). Знаяю что делаю не так как надо, но нету подходящего примера.
Пробовал в 
Код

 protected override void CreateChildControls()
        {
            base.CreateChildControls();
.....
        }

Хотелось бы увидет полный пример (ростой с кнопкой (типа калькулятора хотябы)).
Может ссылочки какие на готовые примеры.

Код

protected override void Render(HtmlTextWriter output)
        {
            string outputStr = "<table border=1>";
            outputStr += "<tr><td>";
            
            Table table = new Table();
            TableRow row = new TableRow();
            TableCell cell = new TableCell();

            Button ButtonBack = new Button();
            ButtonBack.ID = "ButtonBack";
            ButtonBack.Text = "Back";
            ButtonBack.Height = 20;
            ButtonBack.Width = 100;
            ButtonBack.Visible = true;
            ButtonBack.Click += new EventHandler(ButtonBack_Click);

            cell.Controls.Add(ButtonBack);
            row.Cells.Add(cell);
            table.Rows.Add(row);
            this.Controls.Add(table);
            outputStr += "</td></tr>";
            outputStr += " </table>";
            output.Write(outputStr);
        }

PM MAIL   Вверх
tol05
Дата 30.1.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



ИМХО это нужно делать не в Render, а гораздо раньше. Страница уже рендерит свои контролы, а ты их тут добавляешь.
попробуй делать это если не в Load, то хотя бы в PreRender


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Edd
Дата 30.1.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Большое спасибо за подсказки. Кнопки показывает. smile 
Код

...
Button ButtonBack = new Button();
...
protected override void Render(HtmlTextWriter output)
        {
....
ButtonBack.RenderControl(output); //вот такую строку надобыло добавить
....
}

protected override void CreateChildControls()
        {
            base.CreateChildControls();
            ButtonBack.ID = "ButtonBack";
            ButtonBack.Text = "Back";
            ButtonBack.Click += new EventHandler(ButtonBack_Click);
            this.Controls.Add(ButtonBack);
}
...

Только вот эвенты не работают.
Код

[Category("Vote"),
        DefaultValue(0)]
        public bool IsVoted
        {
            get
            {
                return Voted;
            }
            set
            {
                Voted = value;
            }
        }
....
protected void ButtonBack_Click(object sender, System.EventArgs e)
        {
            ShowResult = false;                                 
        }

PM MAIL   Вверх
tol05
Дата 30.1.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



а они и не будут работать.  smile 
потому как добавлять контролы нужно ДО сохранения ViewState

добавляй контролы в событии Load 

или давай код полностью.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Edd
Дата 30.1.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Всем спасибо! Вопросов больше нету
Код

protected override void OnInit(EventArgs e)
        {
            base.CreateChildControls();
            ButtonBack.ID = "ButtonBack";
            ButtonBack.Text = "Back";
            ButtonBack.Click += new EventHandler(ButtonBack_Click);
            this.Controls.Add(ButtonBack);
            ..........
            base.OnInit(e);
        }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.