You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telerik RadGrid中GridHyperlinkColumn的NavigateURL总是偏移一行的问题求助

Telerik RadGrid中GridHyperLinkColumn的NavigateURL总是偏移一行的问题求助

嗨,我一眼就看出你问题出在哪啦!你现在是在修改整个列的NavigateUrl属性,而不是当前行里的具体链接控件,这就导致了偏移的问题。

为啥会这样呢?因为GridHyperLinkColumn是列级别的配置,当你在ItemDataBound事件里给col.NavigateUrl赋值时,这个值会被后续的行复用——第一行渲染的时候列的Url还没设置,所以是空的;第二行渲染时用了第一行设置的列Url;第三行又用了第二行设置的,自然就出现了每一行的链接都是上一行SystemKey的情况。

给你两种解决办法,选哪种都行:

办法一:后台修改当前行的链接控件

不要去修改整个列的属性,而是从当前的GridDataItem里取出对应的HyperLink控件,单独设置它的NavigateUrl:

Protected Sub rg_Systems_ItemDataBound(ByVal s As Object, ByVal e As GridItemEventArgs) Handles rg_Systems.ItemDataBound
    If TypeOf e.Item Is GridDataItem Then
        Dim item As GridDataItem = e.Item
        ' 通过列的UniqueName获取当前行的控件容器,再取出里面的HyperLink
        Dim hyperLink As HyperLink = DirectCast(item("SystemName").Controls(0), HyperLink)
        Dim newUrl As String = "~/System.aspx?Key=" & item.GetDataKeyValue("SystemKey").ToString()
        hyperLink.NavigateUrl = newUrl
    End If
End Sub

办法二:前台直接数据绑定(更推荐)

其实完全不用写后台代码,直接在前台的GridHyperLinkColumn里用数据绑定表达式就能搞定,既简洁又不容易出错:

<telerik:GridHyperLinkColumn 
    DataTextField="SystemName" 
    UniqueName="SystemName" 
    NavigateUrl='<%# "~/System.aspx?Key=" + Eval("SystemKey").ToString() %>'
    HeaderText="系统名称">
</telerik:GridHyperLinkColumn>

这样每一行的链接都会直接绑定当前行的SystemKey,再也不会出现偏移的问题啦!

备注:内容来源于stack exchange,提问作者SethD02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:09:52