如何以编程方式从HyperLinkField控件获取DataNavigateUrlFields属性

时间:2012-03-01 13:26:18

标签: asp.net vb.net hyperlink navigateurl

在我的ASP.NET Web窗体中,我想从DataNavigateUrlFields控件中获取HyperLinkField

为了获得控件,我在RowDataBound事件中使用以下代码:

If e.Row.Cells(n).Controls(0).GetType().ToString() = "System.Web.UI.WebControls.HyperLink" Then
     Dim linkDownload As HyperLink = DirectCast(e.Row.Cells(n).Controls(0), HyperLink)

问题是我已经“填充” HyperLink ,因此DataNavigateURLFormatStringmyPage.aspx?downloadId = {0})和DataNavigateUrlFieldsdownloadGuid)是已合并到HyperLink.NavigateUrl属性中。

有没有办法获得DataNavigateUrlFields财产?如果没有,是否有任何功能可以从HyperLink.NavigateUrl中提取 downloadGuid 值(简而言之,将 NavigateUrl 视为 QueryString )?

VB是首选,但C#中的答案也很受欢迎

2 个答案:

答案 0 :(得分:3)

如果你有了url,你可以使用Url类来操作它。它还允许提取参数和值。还有正则表达式选项。

但DataNavigateUrlFields(downloadGuid)中的downloadGuid来自哪里?你应该在RowDataBound事件参数中获取绑定对象,如果downloadGuid是属性,你可以从那里抓取。

无论如何,完整的事件代码肯定会有所帮助。

答案 1 :(得分:2)

为什么你不能像

那样
 if(e.Row.RowType==DataControlRowType.DataRow)
                Response.Write(((DataRowView)e.Row.DataItem)["downloadGuid"]);