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
相关产品推荐
相关产品推荐

