2013-01-28 4 views
1

Можно ли каким-либо образом превратить строку gridview в гиперссылку, чтобы, например, когда пользователь открывает ее на новой вкладке, она переходит к этой ссылке? Сейчас я использую LinkButton, и когда пользователь открывает его на новой вкладке, он не знает, куда идти.Использование гиперссылки с querystring для строки gridview

Я полагал, что .aspx код будет выглядеть примерно так:

<asp:TemplateField> 
       <ItemTemplate>    
        <Hyperlink ID="hyperlink" runat="server" ForeColor="red" HtmlEncode="false" navigationURL="testUrl.aspx"        
       </ItemTemplate> 
    </asp:TemplateField> 

Единственное, наши URL-адреса устанавливаются в C# код позади в виде строки запроса, поэтому я не знаю, как перейдите в раздел navigationURL.

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

Спасибо!

ответ

4
<asp:TemplateField> 
       <ItemTemplate> 
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#String.Format("~/controller.aspx?routeID1={0}&routeID2={1}", Eval("routeid1"), Eval("routeid2"))%>'></asp:HyperLink> 
      </ItemTemplate> 
    </asp:TemplateField> 

routeid1 и routeid2 передаются как строки запроса к контроллеру этой страницы.

+0

Итак, я попробовал это, и я думаю, что я понял, как установить NavigateURL, но ... мои гиперссылки не доступны для кликов. У вас была эта проблема? – Kevin

0

Недавно я изменил свой класс, чтобы иметь свойство readonly, которое создает тег A для меня. Таким образом, я контролирую, что отображается; просто текст или ссылку.

<ItemTemplate> 
     <asp:Label ID="ColumnItem_Title" runat="server" Text='<%# Bind("DownloadATag") %>'> </asp:Label> 
</ItemTemplate> 

Код только что привязывает экземпляр класса к gridview. Вы можете связать GridView Всякий раз, когда на нагрузке на события обратной передачи и т.д.

Dim docs As DocViewList = GetViewList() 

GridViewDocuments.DataSource = docs 
GridViewDocuments.DataBind() 

В приведенном выше коде, DocViewList, экземпляр, как документы, список класса, который имеет все свойства, которые необходимы для заполнения мой GridView, который здесь называется GridViewDocuments. После того, как вы установите DataSource вашего GridView, вы можете привязать любые свойства источника к элементу.

+0

Что делает ваш код позади выглядеть для этого Bind ("downloadtag"), чтобы принять вас где вам нужно идти? – Kevin

+0

Я обновил свой ответ, надеюсь, что это поможет! – Edwin

0

Что-то вроде:

<asp:LinkButton ID="LinkButton_Title" runat="server" target="_blank" PostBackUrl='<%# Eval(Request.QueryString["title"]) %>'

или связывание их с событием RowCreated:

protected void GridView_OnRowCreated(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     (e.Row.FindControl("LinkButton_Title") as LinkButton).PostBackUrl = Request.QueryString["title"])) 
    } 
} 
Смежные вопросы