2009-08-22 6 views
3

各行のグリッドビューに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 
       } 

EDITの背後にあるコードで

は://プレフィックス仕事をする:リンクはHTTPを持っている必要があることを考え出し。今愚かな感じ:)

答えて

5

リンクが動作するhttp://接頭辞を有していなければならないことを考え出し。

3

リソースオブジェクトは、リダイレクト先のURLへのアクセス権を持っていますか?その場合は、Response.Redirectを使用できます。

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

yes.itはresource.valueの下に保存されています。 – krishna

+0

偉大な、Response.Redirect(resource.value);それを行う必要があります。 :) –

+0

@David。値にhttp://プレフィックスが必要であることがわかりました。それが早く私のために働いていなかった理由だった。あなたの助けに感謝します。 – krishna

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であるかどうかを判断するロジックを置いています。 リンクはファイルでもURLでも同じです – krishna