0

私はASP.NETを初めて使用し、GridViewでのデータの表示に苦労しています。私はそれのほとんどをこのフォーラムの助けを借りて機能させました。現在、IDからファイル名を作成し、データベースから「ファイル拡張子」を作成しようとしていますが、行き詰まりました。これを機能させるには、MultiBindを使用する必要があると思いますか?私のファイル名はID+"_tn" +ファイル拡張子で、これが私のコードです。

            <asp:GridView ID="HitGridView" runat="server" onrowdatabound="HitsRowBid">
                <Columns>
                <asp:TemplateField HeaderText="Street">
                    <ItemTemplate>
                        <asp:TextBox ID="Adress" runat="server" width="200" Text='<%# Bind("StreetName") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Image">
                    <ItemTemplate>
                        <asp:ImageButton ID="defaultImg" runat="server" ImageUrl='<%# Bind("ImgId") %>'/>
                    </ItemTemplate>
                </asp:TemplateField>
                </Columns>
            </asp:GridView>

とコードビハインドで

protected void HitsRowBid(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ImageButton imgBtn = (ImageButton)e.Row.FindControl("defaultImg");
        imgBtn.ImageUrl = "Content/FileUpload/" + imgBtn.ImageUrl + "_tn" + ".jpg";
    }
}

しかし、データベースに保存されているファイル拡張子を取得するにはどうすればよいですか?

4

1 に答える 1

0

私は主にListViewsを使用していますが、これを実現するにはいくつかの方法があります。1つの方法は、データバインディング時にDataKeysを使用し、onrowdataboundイベントの行インデックスを使用して値を取得することです。もう1つのオプションは、コードビハインドでヘルパーメソッドを記述し、データバインディング中に次のように呼び出すことです。

protected string FormatImagePath(string fileName)
{
    string imagePath = Request.ApplicationPath.TrimEnd('/') + "/previews/" + fileName;
    FileInfo testFile = new FileInfo(Helpers.BaseSiteFilePath + @"previews\\" + fileName);
    if (!testFile.Exists)
    {
        imagePath = Request.ApplicationPath.TrimEnd('/') + "/images/no_preview.png";
    }
    return imagePath;
}

そのようにそれを呼ぶ:

ImageUrl='<%# FormatImagePath(Eval("PreviewURL").ToString()) %>'
于 2012-05-02T21:06:01.457 に答える