2012-04-20 8 views
0

ここではちょっと複雑です。 GridViewのファイルのサイズ、作成日、変更日などを列挙したコードがありますが、 'FileName'列にHyperLinkを追加したいのですが、これを行う方法を見つけることができませんでした。ASP.NET VBはGridViewにHyperLinkを追加します

コード内にEntire GridViewを構築します。

Sub BindGrid(path) 
    'Create GridView headings and add titles' 
    Dim dt As New DataTable 
    Dim Name As New HyperLinkField 

    dt.Columns.Add("FileName") 
    dt.Columns.Add("Size") 
    dt.Columns.Add("Last Accessed") 
    dt.Columns.Add("Created Date") 


    Dim Username = User.Identity.Name.ToString 
    Dim TrimUsername = Username.Replace("ASHDOWN\", "") 
    'Dim Path As String = "~\\Users\\" & TrimUsername'' 
    LoginNameDisplay.Text = TrimUsername 

    Dim di As New IO.DirectoryInfo(Server.MapPath(Path)) 
    Try 
     Dim diar1 As IO.FileInfo() = di.GetFiles() 
     Dim dra As IO.FileInfo 

     'list the names of all files in the specified directory' 
     For Each dra In diar1 

      dt.Rows.Add(New Object() {dra.Name, dra.Length & " KB", dra.LastAccessTime, dra.CreationTime}) 
     Next 
     GridView1.DataSource = dt 
     GridView1.DataBind() 
    Catch ex As Exception 

    End Try 




End Sub 

は、ここに私のASPXページのコード

<asp:GridView ID="GridView1" Width="100%" runat="server" CellPadding="4" 
     EnableModelValidation="True" ForeColor="#333333" GridLines="None"> 
     <AlternatingRowStyle BackColor="White" /> 
       <Columns> 
        <asp:HyperLinkField AccessibleHeaderText="Hyperlink" /> 
       </Columns> 
     <EditRowStyle BackColor="#2461BF" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EFF3FB" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
    </asp:GridView> 

これで任意のヘルプは素晴らしいだろうです。

答えて

1

代わりTemplateFieldを使用してください:

<asp:TemplateField> 
<ItemTemplate> 
    <asp:HyperLink ID="HlFile" runat="server" 
     Text='<%# Eval("FileName") %>'> 
    </asp:HyperLink> 
</ItemTemplate> 
</asp:TemplateField> 

を、それはASPXにあまりにも複雑だ場合は、RowDataBoundNavigateUrlを設定することができます。

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     HyperLink hlFile = (HyperLink)e.Row.FindControl("HlFile"); 
     // set the hyperlink url just as you please 
     hlFile.NavigateUrl = row.Field<String>("URL"); 
    } 
} 

編集:ここではVBのバージョンがあります:

Protected Sub GridView1_RowDataBound(sender As [Object], e As GridViewRowEventArgs) 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim row As DataRow = DirectCast(e.Row.DataItem, DataRowView).Row 
     Dim hlFile = DirectCast(e.Row.FindControl("HlFile"), HyperLink) 
     ' set the hyperlink url just as you please 
     hlFile.NavigateUrl = row.Field(Of String)("URL") 
    End If 
End Sub 
+0

を私はこれを試してみましたが、<%のevalの( "ファイル名")は存在しません。情報はIO.FileInfoから得られます。 – user1345931

+0

@ user1345931:次に、推奨されるようにRowDataBoundを処理し、コードビハインドでTextおよびNavigateUrlを設定します。何が起こるかを見るためにデバッグします(DataRowフィールドを調べます)。 'BindGrid'をどこから呼び出すのですか? –

+0

は大丈夫私は再びこれを試みていると私は、次のコードを持っている サブGridView1_RowData(オブジェクトとしてByVal送信者、GridViewRowEventArgsとしてByVal E) 場合e.Row.RowType = DataControlRowType.DataRowそして HlFile.FindControl( "HlFile") HlFile.NavigateUrl = e.Row.Cells(1).Text 終了の場合 End Sub – user1345931

0

HyperLinkFieldのNavigateUrlプロパティをリンク先URLに設定します。

参照:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlinkfield.navigateurl.aspx#Y228

あなたは、DataNavigateUrlFormatStringを使用して以下のようなものプロパティを設定することができます。

HyperLinkField hlf = YourGridView.Columns["hyperlinkColumnName"] as HyperLinkField; 
hlf.DataNavigateUrlFormatString = "~\details.aspx?ProductID={0}"; 
関連する問題