Создание ссылки из других столбцов в Telerik RadGrid

У меня есть Telerik RadGrid, и он содержит три столбца с уникальным именем OrderNo, SendToAddress и ResendLink.

Я хотел бы иметь столбец гиперссылок, который при нажатии вызывает функцию JavaScript, передавая значения из строки, в которой находится гиперссылка, в качестве параметров функции.

Следующий код работает, но только один раз на странице. При последующем обновлении метод выдает исключение (itemData имеет значение null). Примечание. sSearchResults - это объект POCO, используемый в качестве объекта передачи данных для возврата данных столбца.

    Protected Sub dg2_ItemCreated(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles dg2.ItemCreated
    If TypeOf e.Item Is GridDataItem Then
        ' Setup the Resend Link
        Dim item As GridDataItem = CType(e.Item, GridDataItem)
        Dim itemData As sSearchResults = CType(item.DataItem, sSearchResults)
        Dim resendLink As HyperLink = DirectCast(e.Item.FindControl("ResendLink"), HyperLink)
        resendLink.Attributes("href") = "javascript:void(0);"
        resendLink.Attributes("onclick") = [String].Format("return ShowResendForm('{0}','{1}');",
                                                           itemData.OrderNo,
                                                           itemData.SendToAddress)
    End If
End Sub

У меня есть подозрение, что приведенный выше код работал бы надежно, если бы я переместил его в событие ItemDataBound в сетке и установил для EnableViewState значение false. Я еще не пробовал и предпочел бы этого не делать.

Как правильно получить строки столбца данных строки для заполнения другого столбца, подобного этому, с помощью RadGrid?


person J. Polfer    schedule 12.06.2013    source источник


Ответы (1)


Вместо этого я решил эту проблему, указав все столбцы, к которым мне нужно получить программный доступ из метода ItemCreated, как DataKeyNames в ASPX.

Затем в обработчике событий ItemCreated я мог получить доступ к таким значениям:

e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("OrderNo")
person J. Polfer    schedule 12.06.2013