0

ここに少し複雑なものがあります。サイズ、作成日、変更日などを含むファイルをGridViewに一覧表示するコードがあります。[ファイル名]列にハイパーリンクを追加したいのですが、これを行う方法が見つかりませんでした。

コードビハインドで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>

これに関するヘルプは素晴らしいでしょう。

4

2 に答える 2

1

TemplateField代わりにaを使用します。

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

aspx で複雑すぎる場合は、次のようにNavigateUrl設定できます。RowDataBound

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
于 2012-04-20T08:02:17.073 に答える