我是ASP.NET的新手,正在努力在GridView中显示数据。我的大部分工作都来自这个论坛的帮助。目前我正在尝试从数据库中构建一个文件名和一个“文件扩展名”,但是卡住了。我想我需要使用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";
}
}
但是如何获取存储在数据库中的文件扩展名?
答案 0 :(得分: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()) %>'