Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ajax+gridview+linkbutton / 5 сообщений из 5, страница 1 из 1
17.11.2006, 15:48
    #34137146
albion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ajax+gridview+linkbutton
на updatepanel помещаю gridview, одну из колонок которого делаю TemplateField c LinkButton.

Не могу обработать событие нажатия на LinkButton, ни OnClick ни RowCommand не срабатывают.

При нажатии на кнопку GridView вообще пропадает. Чувствую чего то я недопонимаю, так как довольно недавно сталкнулся с ASP.Net.

Помогите :)

Спасибо!
...
Рейтинг: 0 / 0
20.11.2006, 12:46
    #34140609
alexxey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ajax+gridview+linkbutton
привет, у меня такой же бок...почти аналогичная ситуация... в ходе расследования выяснилось что RowCommand вызывается при клике на хеадер столбца, а также в случае, если кликаешь на батоновский тип...то что висит в ItemTemplate таким образом не ловится...я поймал это на событие
Код: plaintext
1.
OnRowDataBound="gd_RowDataBound"> 
вот так у меня прописано в гриде
Код: plaintext
1.
2.
3.
4.
5.
<asp:TemplateField HeaderText="Name" AccessibleHeaderText="Name" SortExpression="Name">
<ItemTemplate>
<asp:LinkButton ID="lbName" runat="server" CommandName="blah"><%# DataBinder.Eval(Container, "DataItem.Name") %></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

а вот так ловится
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
protected void gd_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if ((GridViewRow)e.Row != null) //если не бардак
        {
            if (((GridViewRow)e.Row).RowIndex >=  0 ) //если не хеадер
            {
                GridViewRow gdr;
                gdr = (GridViewRow)e.Row;
                LinkButton lb; //  для варианта  1 
                LinkButton lb1; // для варианта  2 
                if ((lb = (LinkButton)gdr.Controls[ 2 ].FindControl("lbName")) != null)
                    lb.Click += new EventHandler(this.asp_linkbutton_click);
                if ((lb1 = (LinkButton)gdr.Controls[ 2 ].Controls[ 1 ]) != null)
                    lb1.Click += new EventHandler(this.asp_linkbutton_click);
            }
        }
    }

но, хоть оно и заходит в код и якобы прописывает в обоих случаях процедурку, asp_linkbutton_click, то при клике на поле все равно показывает страницу уже без гридвью... а в обработчик процедуры asp_linkbutton_click не заходит...
Может кт оподкинет идею, какой из 2 вариантов прасильней, и что надо делать, чтобы эта фишка работала. Спасибо.
...
Рейтинг: 0 / 0
20.11.2006, 15:13
    #34141169
alexxey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ajax+gridview+linkbutton
короче все решается довольно таки просто...
обработчик выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
protected void gd_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow gdr;
            gdr = (GridViewRow)e.Row;
            LinkButton lb;
            if ((lb = (LinkButton)gdr.Controls[ 2 ].FindControl("lbName")) != null)
                lb.Click += new EventHandler(this.asp_linkbutton_click);
        }
    }
ну и конечно же вешается процедурка типа
Код: plaintext
1.
2.
3.
4.
protected void asp_linkbutton_click(object sender, EventArgs e)
    {
         //делаем всякие безобразия
    }
в гридвью все просто

Код: plaintext
1.
2.
3.
4.
5.
<asp:TemplateField HeaderText="Name" AccessibleHeaderText="Name" SortExpression="Name">
        <ItemTemplate>
                 <asp:LinkButton ID="lbName" runat="server"><%# DataBinder.Eval            (Container, "DataItem.Name") %></asp:LinkButton>
         </ItemTemplate>
</asp:TemplateField>

единственно что надо не забыват ьпро датасурс гридвью, плюс есть бок, что биндинг происходит каждый раз...
...
Рейтинг: 0 / 0
20.11.2006, 15:17
    #34141191
Аноним
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ajax+gridview+linkbutton
Здравствуйте, albion, Вы писали:

A>на updatepanel помещаю gridview, одну из колонок которого делаю TemplateField c LinkButton.

A>Не могу обработать событие нажатия на LinkButton, ни OnClick ни RowCommand не срабатывают.

A>При нажатии на кнопку GridView вообще пропадает. Чувствую чего то я недопонимаю, так как довольно недавно сталкнулся с ASP.Net.

A>Помогите :)

A>Спасибо!



короче все решается довольно таки просто...
обработчик выглядит так
вешаем на гридвью обработку события rowDataBound
protected void gd_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridViewRow gdr;
gdr = (GridViewRow)e.Row;
LinkButton lb;
if ((lb = (LinkButton)gdr.Controls[2].FindControl("lbName")) != null)
lb.Click += new EventHandler(this.asp_linkbutton_click);
}
}

ну и конечно же вешается процедурка типа

protected void asp_linkbutton_click(object sender, EventArgs e)
{
//делаем всякие безобразия
}

в гридвью все просто


<asp:TemplateField HeaderText="Name" AccessibleHeaderText="Name" SortExpression="Name">
<ItemTemplate>
<asp:LinkButton ID="lbName" runat="server"><%# DataBinder.Eval (Container, "DataItem.Name") %></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>


единственно что надо не забывать про датасурс гридвью, плюс есть бок, что биндинг происходит каждый раз...
...
Рейтинг: 0 / 0
21.11.2006, 13:27
    #34143566
orange_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ajax+gridview+linkbutton
Здравствуйте, albion, Вы писали:

A>на updatepanel помещаю gridview, одну из колонок которого делаю TemplateField c LinkButton.

A>Не могу обработать событие нажатия на LinkButton, ни OnClick ни RowCommand не срабатывают.

A>При нажатии на кнопку GridView вообще пропадает. Чувствую чего то я недопонимаю, так как довольно недавно сталкнулся с ASP.Net.

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


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