Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > DataGrid & JavaScript


Автор: cosamia 8.3.2006, 11:19
Есть на датагриде несколько кнопок, хочу к одной из них привязать ф-ю на javascript - confirm. Но при привязке через атрибут функции на onclick получится что ф-я будет вызываться на все кнопки грида. Каким образом это можно избежать?

Автор: arilou 9.3.2006, 18:51
cosamia, судя по тому, что до сих пор не было ответов, вопроса никто не понял. Перефразируй пожалуйста.

Автор: Exception 9.3.2006, 19:41
Погоди-ка. Ты о датагриде для web? О каких кнопках идет речь? И неплохо бы все это подкрепить примером smile

Автор: arilou 9.3.2006, 19:55
Цитата(Exception @ 9.3.2006, 19:41 Найти цитируемый пост)
Ты о датагриде для web?

Вниииимательнее читаем название форума -
Цитата

Форум программистов -> Программирование -> .NET -> Разработка под ASP.NET
smile

Автор: cosamia 9.3.2006, 19:56
речь о вебе, потому тема находится в асп.нет

вот мой грид:
Код

<Columns>
<asp:BoundColumn DataField="f1" " />
<asp:ButtonColumn ButtonType="LinkButton" Text="<IMG src='Images/delete_row.gif'   border='0'>"
CommandName="cmd1" />

<asp:ButtonColumn ButtonType="LinkButton" Text="<IMG src='Images/delete_row.gif'   border='0'>"
CommandName="cmd2" />
</Columns>


как видно в гриде 2 ряда кнопок. на каждую надо навесить свою ф-ю из JS а потом передать управление уже непосредственно обработчику OnItemCommand

пробовал через datagrid1.attribute.add("onclick", "..."
но это крепиться на все кнопки...а мне надо на кнопки первого ряда 1 ф-ю, а на кнопки 2-го другую

Автор: arilou 9.3.2006, 20:05
cosamia,

1) прицепляемся к событию DataGrid.ItemCreated.
2) Вызываем e.Item.FindControl("cmd1").Attributes.Add("onclick", "func1();")
3) Вызываем e.Item.FindControl("cmd2").Attributes.Add("onclick", "func2();")

И будет тебе счастье smile

Автор: cosamia 10.3.2006, 18:28
сделал так:

Private Sub SomeDataGrid_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles SomeDataGrid.ItemCreated
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
Dim myTableCell As TableCell
myTableCell = e.Item.Cells(3) 'номер столбца
Dim myDeleteButton As LinkButton
myDeleteButton = myTableCell.Controls(0)
myDeleteButton.Attributes.Add("onclick", "func1();")
End Select
End Sub

такой вариант работает но тут непонятная проблема:
у меня первым столбцом грида идет тектовое значение, вторым кнопка.
по нажатию я хочу передать в javascript значение из 1 столбца этой строки
В SomeDataGrid_ItemCreated делаю так:
Dim param1 As String = e.Item.Cells(0).Text

далее начинается непонятное: значение пустое. Более того если положу на форму label c тесктом лабел1 (т.е. как оно идет по умолчанию) и попытаюсь присвоить ей значение из param1
то еще до нажатия на кнопку label пустой.

В тоже время в OnItemComman
Dim param1 As String = e.Item.Cells(0).Text
определяется правильно...

В чем тут проблема?

Автор: arilou 10.3.2006, 18:36
cosamia, опять лень было код отформатировать?

Цитата(cosamia @ 10.3.2006, 18:28 Найти цитируемый пост)
В чем тут проблема

Надо использовать метод FindControl.

Автор: cosamia 10.3.2006, 18:46
в каком месте и для кого использовать? можно поконкретнее плиз?

Автор: arilou 10.3.2006, 18:51
Цитата(cosamia @ 10.3.2006, 18:46 Найти цитируемый пост)
в каком месте и для кого использовать?

Метод используется для поиска вложенных контролов по имени. Посмотри MSDN и, думаю, все станет ясно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)