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,但有几种方法可以实现这一点。一种方法是在数据绑定时使用 DataKeys 并通过使用 onrowdatabound 事件中的行索引来检索值。另一种选择是在代码隐藏中编写一个辅助方法并在数据绑定期间调用它,例如:

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 回答