2009-08-22 124 views
3

我有一個「查看」鏈接到一個gridview中的每一行aspx頁面。轉到外部網站,如果它是一個超鏈接

根據資源的類型1)文件或2)超鏈接,它應該下載文件或轉到提到的超鏈接。

<asp:TemplateField HeaderText="View"> 
       <ItemTemplate> 
        <a id="View" href="../resources/ResourceFile.aspx?Id=<%# Eval("Id")%>" target="_blank">View</a> 
       </ItemTemplate> 
    </asp:TemplateField> 

我知道它的文件類型,但如何重定向到外部鏈接,如「www.yahoo.com」,如果它是一個超鏈接。

在後面的代碼

if(resource.ResourceType.ToLower().Equals("hyperlink")){ 
        // what should i do here? 
       // the link is stored in resource.value 
       } 

編輯:想通鏈接應該有一個http://前綴工作。現在感覺很蠢:)

回答

5

想通該鏈路應具有http://前綴工作。

3

資源對象是否有權訪問您希望重定向到的URL?如果是這樣,你可以使用Response.Redirect。

if(resource.ResourceType.ToLower().Equals("hyperlink")){ 
    Response.Redirect(resource.Url); 
} 
+0

yes.it存儲在resource.value下。 – krishna 2009-08-22 04:52:23

+0

太棒了,那麼Response.Redirect(resource.value);應該這樣做。 :) – 2009-08-22 05:05:46

+0

@David。發現該值應該有一個http://前綴。這就是爲什麼它早些時候不適合我。感謝您的幫助。 – krishna 2009-08-22 05:23:12

0

將asp.net超鏈接添加到項目模板。然後處理RowDataBound事件以動態更改超鏈接的NavigateURL屬性。這樣你避免了郵包。

<asp:TemplateField HeaderText="View"> 
    <ItemTemplate> 
     <asp:Hyperlink runat="server" id="View" target="_blank">View</a> 
    </ItemTemplate> 
</asp:TemplateField> 

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     HyperLink hl = (HyperLink)e.Row.FindControl("View"); 
     hl.NavigateUrl = "Link to file or url based on resource type"; 
    } 
} 

[http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx][1]

[1]:MSDN例

+0

我在其他幾個地方使用resourcefile.aspx。我把邏輯弄清楚它是否是該頁面後面的代碼中的文件或url。 鏈接是相同的,無論是文件還是網址 – krishna 2009-08-22 07:43:11

相關問題