Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView: как узнать на какую HyperLink нажал пользователь? / 18 сообщений из 18, страница 1 из 1
24.08.2006, 12:08
    #33939716
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
В GridView я использую колонки типа HyperLink.
Но проблема такая: здесь я не нахожу OnItemCommand, как это было в DataGrid'aх, а есть сразу NavigateUrl.
Как же мне узнать, в какой строке произошло нажатие, когда я окажусь перенесенным по ссылке?
...
Рейтинг: 0 / 0
24.08.2006, 12:37
    #33939853
ivanov777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
gridview.selectindex() -показывает номер строки
...
Рейтинг: 0 / 0
24.08.2006, 12:51
    #33939905
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Спасибо за selectindex()

Но как я доберусь до моего GridView, когда я по NavigateUrl уже ускачу на другую страницу?
...
Рейтинг: 0 / 0
24.08.2006, 12:53
    #33939913
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
В Url передай код строки----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
24.08.2006, 12:56
    #33939926
ivanov777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Используй Session("имя переменной","значение переменной") -передача параметров
...
Рейтинг: 0 / 0
24.08.2006, 14:03
    #33940227
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Если я использую Url для значения строки, то куда же она меня пошлет? И где я вообще после нажатия на эту ссылку окажусь?
...
Рейтинг: 0 / 0
24.08.2006, 14:05
    #33940237
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Session - штука отличная, но ведь "какы знать, куда попадешь...". Ведь до кликания пользователем на ссылку я ЕЩЕ не знаю ее значения. А использовать Session до этого момента - бесполезно.
...
Рейтинг: 0 / 0
24.08.2006, 14:12
    #33940271
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Ой как все запущено.
Можно обработать RowDataBound и там дописать в урл параметр указывающий номер строки
Примерно так
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink hl = ((HyperLink)e.Row.Cells[2].Controls[0]);
hl.NavigateUrl = string.Format("javascript:OpenMainForm('MainForm.aspx?ID={0}')",((DataRowView)e.Row.DataItem)["ЗаявЗаказ"]);
}
----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
24.08.2006, 21:38
    #33941567
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Уважаемый C...R...a...S...H

Предположим, я так и сделал.
Но я не понимаю, куда меня при этом перенесет модифицированная таким образом ссылка, и как мне потом извлечь (и откуда) информацию о строке.е.
...
Рейтинг: 0 / 0
24.08.2006, 21:56
    #33941576
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
параметр - номер строки впиши в URL Через ? - я по-краней мере так делаю

а второе - ну кто тебе мешает прост кнопки испоользовать, а не HyperLink?
...
Рейтинг: 0 / 0
24.08.2006, 22:24
    #33941602
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
1) Спасибо, про "параметр - номер строки впиши в URL Через ?" - но ведь URL одно на всю колонку, когда я буду вписывать туда номер строки, то при присвоении значения следующей строке в этой колонке предыдущий URL затрется, и никакого толку не будет
2) даже если так, ОТКУДА мне потом получить этот номер строки - ведь я уже окажусь на новой странице, перенесенный туда по ссылке URL
3) кнопки - это не так красиво выглядит как ссылки в таблице. Тогда и GridView незачем использовать, а можно идти по пути DataGrid для моих целей. Что за дичь: почему они CommandName для кнопок оставили, а для HyperLinkField убрали! Похоже, они перемудрили...
Спасибо за сочувствие. Если поможете мне, тупому, еще немножко разобраться, буду благодарен.
...
Рейтинг: 0 / 0
24.08.2006, 22:53
    #33941642
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
да блин вручную впиши!
on each rows
пробежись по DataGrid и впиши одну и ту же страничку, которой в ? передай номер строки, а потом с той странички Redirect на исходную
...
Рейтинг: 0 / 0
24.08.2006, 23:13
    #33941664
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Если можно, не нервничай, дорогой vbnet2000!
Лучше объясни:
1) в DataRow я не нашел куда вписать адрес+?c-номером-строки. Единственный такого рода параметр - это был NavigateUrl, но он был в Columns и, как я уже говорил, он - один на всех.
В Grid'e в интересующей меня колонке есть значение строки (которое подчеркнутым видно на экране). Мне надо значение строки окружить тэгами типа <a href="кудаидти?номерстроки">значение-строки</a> ?

2) где я могу принять принять этот параметр: на новой страничке, или здесь (где окажусь снова если сделаю Redirect на исходную). И как его принять?

Прости, но до меня что-то не доходит.
...
Рейтинг: 0 / 0
24.08.2006, 23:34
    #33941686
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
в каждой строке (For Each OneRow As GridViewRow In MyGridView.Rows)
у тебя есть ссылка - ну открой отладчик и посмотри
туда впиши NavigateURL с параметром http://LinkHandler.aspx?Row=1
в следующую строку - http://LinkHandler.aspx?Row=2
а на страничке LinkHandler.aspx прими это параметр как request.querystring(Row), выставь в SESSION, после делаешь Redirect на основную - ты попадешь в ее раздел PageLoad, где IsPostback=False и там возьми это значение ROW из SESSION

все, больше это разжевывать не могу. ну прочитай все что выше несколько раз...
...
Рейтинг: 0 / 0
24.08.2006, 23:36
    #33941689
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
а чтобы НЕ возиться просто поставь кнопку и слови событие как в Windows-Форме
...
Рейтинг: 0 / 0
25.08.2006, 10:36
    #33942231
gaidar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
C...R...a...S...H дал правильный совет, лучше всего установить GET параметры. Например, если в обработчике RowDataBound (на всякий случай чуть-чуть меняю пример):if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink lnk = ((HyperLink)e.Row.Cells[IDЯчейкиСсылки].Controls[0]);
lnk.NavigateUrl = string.Format("('~/Страника.aspx?ID={0}')",
((DataRowView)e.Row.DataItem)["ИмяПоляId"]);
}
То на странице Страница.aspx Вы можете получить параметр ID из коллекции Request.Params:string id = Request.Params["ID"];
// если id - int, то
int intId = int.Parse(id);
// если Guid, то
Guid guidId = new Guid(id);

Судя по всему, вы просто не понимаете, что такое GET параметры или как с ними работать...--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
25.08.2006, 22:50
    #33944387
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Ура! Получилось!

Огромное спасибо всем участникам обсуждения этой темы, и в особенности Вам, Гайдар, за то, что довели дело до конца.
Мне оставалось только исправить строку с одиночной кавычкой (иначе было попытка вызова /('.... против чего браузер ругался)

Кому будет полезно, привожу результаты.

В aspx стоит:
<asp:GridView ID="GridViewConferences"
OnRowDataBound="GridViewConferences_RowDataBound"
AutoGenerateColumns="false"
BorderColor="black"
BorderWidth="0"
CellPadding="3"
style="font-family:Courier New; font-size:9pt"
Width="100%"
runat="server">
<HeaderStyle BackColor="#00aaaa" HorizontalAlign="Center" />
<Columns>
<asp:BoundField ItemStyle-Width="24px"
HeaderText="№"
ItemStyle-HorizontalAlign="Center"
DataField="ConferenceNumber" />
<asp:HyperLinkField ItemStyle-Font-Size="14pt" ItemStyle-Font-Names="Palatino Linotype"
HeaderText="Наименование совещания"
NavigateUrl="~/FomConference.aspx"
DataTextField="ConferenceName" />


В aspx.cs стоит:
protected void GridViewConferences_RowDataBound(Object sender, GridViewRowEventArgs e) {
HyperLink lnk;
if (e.Row.RowType == DataControlRowType.DataRow) {
lnk= ((HyperLink)e.Row.Cells[1].Controls[0]);
lnk.NavigateUrl = string.Format("~/FomConference.aspx?ID={0}", ((DataRowView)e.Row.DataItem)["ConferenceName"]);
}
}

В вызываемой странице FomConference стоит:
protected void Page_Load(object sender, EventArgs e) {

string id = Request.Params["ID"];
}

и в строке id мы получаем текст той строки, на которую нажал пользователь.

------------------------------
Почему так удачно вышло, я еще не прочувствовал, но, по крайней мере, получилось!
Спасибо.
...
Рейтинг: 0 / 0
28.08.2006, 15:41
    #33947202
hilsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView: как узнать на какую HyperLink нажал пользователь?
Снова возвращаюсь к той же теме.
Выявляется одна странность: когда кликаешь на HyperLink, то ОКАЗЫВАЕТСЯ, прежде чем пойти на указанную страницу (с указанным параметром) программа почему-то совершает ЗАХОД на Load от страницы Default.aspx.cs - и только потом идет на нужную страницу.
В принципе, ничего страшного в этом нет (особенно если в этом Load от Default.aspx.cs нет особенного криминала). Но непонятно, зачем она ходит в Default.aspx.cs?
Может быть тут дело в том, что все 3 страницы (вызываемая FomConference, вызывающая FomForum и Default) привязаны к одной и той же Master-странице? Ну и что?
Кто-нибудь может объяснить мне эту загадку?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView: как узнать на какую HyperLink нажал пользователь? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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