1

複数のディレクトリからディレクトリのリストを取得して、それらをグリッドビューに入れようとしています。これまでのところ、クエリ文字列に基づいてフォルダー名を取得するための searchPattern も含めました。ただし、GridView でフォルダー パスをハイパーリンクに変換しようとすると、問題が発生します。列名を正しく取得できないようで、「DataBinding: 'System.String' に次の名前のプロパティが含まれていません」フルネーム'。" 私は何を間違っていますか?フォルダ パスは「FullName」と呼ばれていませんか?

これが私のコードです。助けていただければ幸いです:コードビハインド(VB.NET)

 Dim paths As String = "\\xx\PROJECTS\OilGas\;\\xx\PROJECTS\Utils\;\\xx\PROJECTS\Rail\RAIL PROJECTS\PROJECTS - ACTIVE\"
    Dim pathList As String() = paths.Split(";")

    Dim files = New List(Of String)()

    Dim search As String = "*" + qs.Text
    Dim ext As String = "*"

    Dim searchPattern As [String] = [String].Format("{0}*{1}", search, ext)

    For Each str As String In pathList
        Dim d As New DirectoryInfo(str)
        files.AddRange(Directory.GetDirectories(d.FullName, searchPattern))

        GridView1.DataSource = files
        GridView1.DataBind()
    Next    

グリビューコード:

<asp:GridView ShowHeader="True" ID="GridView1" runat="server" BorderStyle="None" GridLines="None">
<Columns>
        <asp:TemplateField >
            <ItemTemplate>                   
                <asp:HyperLink ID="HyperLink1" NavigateUrl='' Target="_blank" Text='<%#Eval("FullName")%>' runat="server"></asp:HyperLink>
            </ItemTemplate>
            </asp:TemplateField>
            </Columns>
    <EmptyDataTemplate>
        <em><strong><span style="color: #ff0033">Invalid project code or no project folder found
            with that project code.</span></strong></em>
    </EmptyDataTemplate>
</asp:GridView>

敬具、ジェームズ。

4

1 に答える 1

1

GridView のデータソースは、文字列のリスト (フォルダーのパスを含む) です。

バインドされたハイパーリンクには、DataSource のすべてのアイテムの le FullName プロパティを取得するよう求める Eval 命令が含まれています。DataSource はリストであり、次のように変換できます。

foreach(string path in files)
{
    HyperLink1.NavigateUrl = path.FullName;
}

問題が見え始めていることを願っています。文字列クラスには FullName プロパティがありません。

解決策は、Eval を次のように置き換えることです (これはリフレクションを行い、あまり効率的ではないため、とにかく悪い解決策です)。

<%# Container.DataItem %>

キャストできる型付き変数です

だからあなたもこれを書くことができます:

<%# (string)Container.DataItem %>

EDIT :申し訳ありませんが、C# でコードを書きました。

于 2013-07-04T11:44:40.590 に答える