Как программно получить свойство DataNavigateUrlFields из элемента управления HyperLinkField - PullRequest
1 голос
/ 01 марта 2012

В моих веб-формах ASP.NET я хотел бы получить 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 , уже «заполненный», поэтому DataNavigateURLFormatString (myPage.aspx?downloadId = {0}) и DataNavigateUrlFields (downloadGuid) уже объединены всвойство HyperLink.NavigateUrl.

Есть ли способ получить свойство DataNavigateUrlFields?Если нет, есть ли какая-либо функция для извлечения значения downloadGuid из HyperLink.NavigateUrl (вкратце, NavigateUrl как QueryString )?

VB предпочтительнее, но также приветствуются ответы на C #

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Если вы получили URL, вы можете использовать класс Url для манипулирования им. Это также позволяет извлекать параметры и значения. Также доступна опция регулярного выражения.

Но откуда берется downloadGuid в DataNavigateUrlFields (downloadGuid)? Вы должны получить свой связанный объект в параметрах события RowDataBound. Если свойство downloadGuid является свойством, вы можете получить его оттуда.

В любом случае, полный код события, безусловно, поможет.

2 голосов
/ 01 марта 2012

Почему вы не можете получить это как

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