Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / onclick в строке Датагрида / 25 сообщений из 28, страница 1 из 2
12.10.2004, 12:14
    #32733644
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
Вообщем нужно сделать вот что.
Чтобы в каждой строки грида была ссылочка на другую страничку которая в качестве параметра принимает элемент из строки грида.
Страничка при этом естественно перезагружать не должна.
пробовал просто
<a href="CustomerDetails.aspx?cid=<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>">...</a>

не прокатывает. пишет что типа не может так. видимо потому что не серверный компонент.
Но если делать его серверным, тогда страничка автоматически будет обновляться, что не нужно (ведь ей всего лишь нужно вызвать другую).

Санкс.
...
Рейтинг: 0 / 0
12.10.2004, 12:22
    #32733675
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
А так?
Код: plaintext
1.
<a href='CustomerDetails.aspx?cid=<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>'>...</a>
...
Рейтинг: 0 / 0
12.10.2004, 12:29
    #32733696
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
...
Рейтинг: 0 / 0
12.10.2004, 12:41
    #32733746
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
вообще если мало template column , как вам описали выше, то можно сделать и так, чтобы на щелчок мыши вызывалось popup окно клиентским скриптом.
если нужно именно так, напишите - я покопаюсь в исходниках.
...
Рейтинг: 0 / 0
12.10.2004, 12:45
    #32733764
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
Monstru
да именно оно и нужно, ибо окошко должно быть определенного размера (т.е. просто написасть target="_blank" не подойдет)
...
Рейтинг: 0 / 0
12.10.2004, 12:49
    #32733784
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
...
Рейтинг: 0 / 0
12.10.2004, 12:52
    #32733796
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
...
Рейтинг: 0 / 0
12.10.2004, 13:13
    #32733881
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
Все не то.
Нужно чтобы при вызове попапа основное окно не перезагружалось (оптимизируем по скорости), следовательно нужно использовать не серверный контрол.
Что надо использовать понятно. <a href у которого в ссылке будет стоять window.open() открывающий окошко.
Непонятно как засунуть туда параметр из строки грида.
...
Рейтинг: 0 / 0
12.10.2004, 13:47
    #32733977
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
Код: plaintext
1.
2.
<a onclick="window.open('CustomerDetails.aspx?cid=<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>');
return false;" href="#">...</a>
...
Рейтинг: 0 / 0
12.10.2004, 13:47
    #32733980
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
в общем как я сделал по мотивам какого то примера
1. добавит в список колонок колонку с кнопкой select
2. visible=false у нее
3. все интересное в этой функции

Private Sub dgrdListForums_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrdListForums.ItemDataBound
Dim itemType As ListItemType = e.Item.ItemType
If ((itemType = ListItemType.Pager) Or _
(itemType = ListItemType.Header) Or _
(itemType = ListItemType.Footer)) Then
Return
Else
Dim button As button = _
CType(e.Item.Cells(1).Controls(0), button)
e.Item.Attributes("onmouseover") = _
"javascript:this.style.backgroundColor='#00C0C0';this.style.cursor='hand';"
e.Item.Attributes("onmouseout") = _
"javascript:this.style.backgroundColor='';this.style.cursor='';"


e.Item.Attributes("onclick") = _
Page.GetPostBackClientHyperlink(button, "")
End If
End Sub

тут
Dim button As button - получает кнопку select
И
e.Item.Attributes("onclick") = _
Page.GetPostBackClientHyperlink(button, "")
к ряду datagrid на событие onclick подвещиваем клиентский обработчик кнопки select.

в вашем случае можно написать
e.Item.Attributes("onclick") = "javascript:showItem()"
showItem - клиентская функция, ей параметром можно передать какое-нибудь зхачение из datagrid. его можно получить из datasource datagrid.
...
Рейтинг: 0 / 0
12.10.2004, 13:49
    #32733987
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
дык точно также:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<asp:TemplateColumn HeaderText="Удалить">
	<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
	<ItemStyle HorizontalAlign="Center"></ItemStyle>
	<ItemTemplate>
		<a href='webform.aspx/?param=<%# DataBinder.Eval(Container.DataItem, "Param")%>'
		onClick="newWnd = window.open(this.href, 'newWnd ', 'width=300,height=550,left=610,
		top=100,location=no,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=yes,
		toolbar=no').focus(); return false;">...</a>
	</ItemTemplate>
</asp:TemplateColumn>

//только с кавычками повнимательнее
...
Рейтинг: 0 / 0
12.10.2004, 13:50
    #32733996
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
Вы так пробовали?
У меня не выходит - при попытке перейти из HTML в Design пишет - "Could not open in Design View. Quote values differently inside a '<% ... "value"... %>' block
...
Рейтинг: 0 / 0
12.10.2004, 13:51
    #32733998
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
dmitry_cmcВы так пробовали?
У меня не выходит - при попытке перейти из HTML в Design пишет - "Could not open in Design View. Quote values differently inside a '<% ... "value"... %>' block

Это я грил в ответ на сообщение Ustazz
...
Рейтинг: 0 / 0
12.10.2004, 13:52
    #32734004
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
если так пишет, значит путаница с кавычками произошла
...
Рейтинг: 0 / 0
12.10.2004, 13:58
    #32734020
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
Действительно ругается :( Я не пользуюсь дизайнером, поэтому в нем не проверял. На вариант profil ничего не говорит.
...
Рейтинг: 0 / 0
12.10.2004, 14:00
    #32734027
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
когда пишите выражение <%# DataBinder.Eval(Container.DataItem, "Param")%>, то оно обязательно должно обрмляться одинарными кавычками
то есть вместо
<a href='webform.aspx/?param=<%# DataBinder.Eval(Container.DataItem, "Param")%>'
попробуйте
<a href='<%# "webform.aspx/?param=" & DataBinder.Eval(Container.DataItem, "Param")%>'
-с серверными скобками <%# %> повнимательнее нужно
...
Рейтинг: 0 / 0
12.10.2004, 14:02
    #32734042
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
profilесли так пишет, значит путаница с кавычками произошла

Да, только не понятно как ее разрешить.

Ваш вариант привлекательно выглядит. Единственно что - браузер говорит что на странице ошибки, а требуемая страничка открывается в том же окне а не в попап.
Вообще я так подумал логично было бы строку запроса как нить в переменную javacript положить а потому уже в onclink ее доставать.
Но я этого не могу сделать, т.к. не знаю javacript
...
Рейтинг: 0 / 0
12.10.2004, 14:11
    #32734086
dmitry_cmc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
monstrUкогда пишите выражение <%# DataBinder.Eval(Container.DataItem, "Param")%>, то оно обязательно должно обрмляться одинарными кавычками
то есть вместо
<a href='webform.aspx/?param=<%# DataBinder.Eval(Container.DataItem, "Param")%>'
попробуйте
<a href='<%# "webform.aspx/?param=" & DataBinder.Eval(Container.DataItem, "Param")%>'
-с серверными скобками <%# %> повнимательнее нужно

В если выражение внутри <%# %> само должно содержать одинарные скобки? :)
...
Рейтинг: 0 / 0
12.10.2004, 14:20
    #32734106
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
dmitry_cmc monstrUкогда пишите выражение <%# DataBinder.Eval(Container.DataItem, "Param")%>, то оно обязательно должно обрмляться одинарными кавычками
то есть вместо
<a href='webform.aspx/?param=<%# DataBinder.Eval(Container.DataItem, "Param")%>'
попробуйте
<a href='<%# "webform.aspx/?param=" & DataBinder.Eval(Container.DataItem, "Param")%>'
-с серверными скобками <%# %> повнимательнее нужно

В если выражение внутри <%# %> само должно содержать одинарные скобки? :)

да, что то тут и меня смущает :) щас попробую найти как нужно
...
Рейтинг: 0 / 0
12.10.2004, 14:22
    #32734114
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
что бы было проще разобраться, windows.open(..) лучше вынести в отдельную функцию (да и страница весит меньше будет)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<asp:TemplateColumn HeaderText="Удалить">
	<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
	<ItemStyle HorizontalAlign="Center"></ItemStyle>
	<ItemTemplate>
		<a href='webform.aspx/?param=<%# DataBinder.Eval(Container.DataItem, "Param")%>'
		onclick="javascript: OpenNewWnd(this.href); return false;">...</a>
	</ItemTemplate>
</asp:TemplateColumn>
а на странице разместить javascript:
Код: plaintext
1.
2.
3.
4.
<script language='JavaScript'>
function OpenNewWnd(sUrl){
var features = 'width=500,height=550,left=350,top=100,location=0,menubar=0,resizable=0,scrollbars=1,status=0,titlebar=1,toolbar=0';
NewWnd = window.open(sUrl , 'NewWnd', features ).focus();}
</script>
ну примерно так... идея, я думаю, ясна
...
Рейтинг: 0 / 0
12.10.2004, 14:25
    #32734130
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
вот из моего проекта

<asp:HyperLink id=hlTowns runat="server" EnableViewState="False"
Text='<%# Container.DataItem("name_town") %>'
Target="_blank"
NavigateUrl='<%# "http://bk/info/service/weather/#" &
DataBinder.Eval(Container, "DataItem.weather") %>'>
</asp:HyperLink>

то есть как я понимаю NavigateUrl это то что интересует ?
причем советую оформлять через визуальный дизайнер databinding
...
Рейтинг: 0 / 0
12.10.2004, 14:29
    #32734141
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
см. картинку - надо примерно так
...
Рейтинг: 0 / 0
12.10.2004, 14:33
    #32734157
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
profilчто бы было проще разобраться, windows.open(..) лучше вынести в отдельную функцию (да и страница весит меньше будет)
Код: plaintext
1.
2.
3.
<asp:TemplateColumn HeaderText="Удалить">
......
	</ItemTemplate>
</asp:TemplateColumn>

но ведь так он сделает открытие окна пл щелчку на гиперсылке, а ему надо сделать открытие окна по щелчку на строке грида


profilа на странице разместить javascript:
Код: plaintext
1.
2.
3.
4.
<script language='JavaScript'>
function OpenNewWnd(sUrl){
var features = 'width=500,height=550,left=350,top=100,location=0,menubar=0,resizable=0,scrollbars=1,status=0,titlebar=1,toolbar=0';
NewWnd = window.open(sUrl , 'NewWnd', features ).focus();}
</script>
ну примерно так... идея, я думаю, ясна

функция то что надо, ее и использовать
...
Рейтинг: 0 / 0
12.10.2004, 14:39
    #32734171
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
вас по ошибочному путю повели.

в итоге сделайте следующее

Private Sub dgrdListForums_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrdListForums.ItemDataBound
Dim itemType As ListItemType = e.Item.ItemType
If ((itemType = ListItemType.Pager) Or _
(itemType = ListItemType.Header) Or _
(itemType = ListItemType.Footer)) Then
Return
Else

Dim drv As DataRowView = CType(e.Item.DataItem, DataRowView)
e.Item.Attributes("onclick") = "javascript:OpenNewWnd('mypage.aspx?id_param" & dv("param") & ";'")
End If
End Sub

это если вы в datasource использовали dataview - и на щелчок мыши на строке будет окрываться новое окнос параметрами строки
...
Рейтинг: 0 / 0
12.10.2004, 14:43
    #32734178
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onclick в строке Датагрида
monstrUно ведь так он сделает открытие окна пл щелчку на гиперсылке, а ему надо сделать открытие окна по щелчку на строке грида
мне показалось постановка задачи была следующая:
dmitry_cmcЧтобы в каждой строки грида была ссылочка на другую страничку которая в качестве параметра принимает элемент из строки грида.
Страничка при этом естественно перезагружать не должна.
...ибо окошко должно быть определенного размера
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / onclick в строке Датагрида / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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