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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как добавить кнопку в edit ячейку datagrid'а? vs2003, framework 1.1 
V
    Опции темы
semi
Дата 22.5.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



собственно вопрос в теме... делала так:

Код

  public Button but1 = new Button();    
...
  protected void grid_item_data_bound (object sender, DataGridItemEventArgs e)
{
  if (e.Item.ItemType.ToString() == "EditItem")
    {          but1.ID = "Button";
        but1.Text = "?";
        e.Item.Cells[4].Controls.Add(but1);
    }
private void InitializeComponent()
    {
                this.but1.Click += new System.EventHandler(this.but1_click);
    }
private void but1_click(object sender, System.EventArgs e)
        {...}
}

когда нажимаешь кнопку "редактировать" в datagrid, то в ячейке появляется but1. НО! когда нажимаешь but1, вместо того, чтобы выполнять but1_click она исчезает :(

help!!! как добавить кнопку, чтоб она не исчезала?

Это сообщение отредактировал(а) semi - 22.5.2007, 21:05
PM MAIL ICQ   Вверх
Mymik
Дата 23.5.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



проблема заключается в том, что при PostBack данных на сервер, динамически сконфигурированные данные не сохраняются.
Потому их надо либо перегенерировать по новой, либо делать вызов их обработчиков с помощью, к примеру, Page.GetPostBackClientEvent
Т.е. когда ты создаешь кнопку, ты ее добавила в 8 строчке кода (приведенного выше) и после этого ты дописываешь еще что-то типа 
Код

btn1.Attributes.Add("onclick", Page.GetPostBackClientEvent(btn1, "Clicked"));

А потом в Page_Load ты смотришь по Request.Form["__EVENTTARGET"] кто отправил запрос, а по Request.Form["__EVENTARGUMENT"], что в этом запросе было передано.


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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



Цитата(Mymik @  23.5.2007,  09:03 Найти цитируемый пост)
А потом в Page_Load ты смотришь по Request.Form["__EVENTTARGET"] кто отправил запрос, а по Request.Form["__EVENTARGUMENT"], что в этом запросе было передано. 

можно про это поподробнее?

Цитата(Mymik @  23.5.2007,  09:03 Найти цитируемый пост)

Код

btn1.Attributes.Add("onclick", Page.GetPostBackClientEvent(btn1, "Clicked"));


я так понимаю Clicked должна быть функция js?
PM MAIL ICQ   Вверх
semi
Дата 23.5.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



Mymik, спасибо огромное!

вот что получилось (надеюсь все правильно поняла smile если нет - скажи) :
Код

    private void Page_Load(object sender, System.EventArgs e)
        {
            if (!IsPostBack)
            {...}        
            else
            {
                if (Request.Form["__EVENTARGUMENT"]=="js_click")
                {
                    but1.ID = "Button";
                    but1.Text = "?";
                    DataGrid_t.Items[DataGrid_t.EditItemIndex].Cells[4].Controls.Add(but1);                    
                }
            }
        }        
        protected void grid_item_data_bound (object sender, DataGridItemEventArgs e)
                {
                   if (e.Item.ItemType.ToString() == "EditItem")
                       {          but1.ID = "Button";
                                   but1.Text = "?";
                                   e.Item.Cells[4].Controls.Add(but1);
                                   but1.Attributes.Add("onmouseup", Page.GetPostBackClientEvent(but1, "js_click"));
                   but1.Attributes.Add("onclick", "getPageWithData()"); // js функция
                       }
                 }

PM MAIL ICQ   Вверх
Mymik
Дата 23.5.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(semi @  23.5.2007,  12:24 Найти цитируемый пост)
вот что получилось (надеюсь все правильно поняла smile если нет - скажи) :

А что тебе нужно было ???  smile я просто не знаю... я думал, что тебе нужно вызвать метод какой-то... ну так я предложил тебе JS вариант как вызывать метод... т.е. в той ситуации когда IsPostBack ты просто будешь искусственно возбуждать событие клика...
А у тебя сейчас... просто стоит добавление элемента... и все...  smile 

Цитата(semi @  23.5.2007,  10:50 Найти цитируемый пост)

я так понимаю Clicked должна быть функция js? 

Такого события нет. Советую хотя бы в первом приближении ознакомиться с событиями JS -->> JS Events


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

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

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

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

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


 




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


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

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