2012-05-02 42 views
0

我是ASP.NET新手,正在努力在GridView中顯示數據。我在這個論壇的幫助下完成了大部分工作。目前我正在嘗試從ID和數據庫中的「文件擴展名」構建文件名,但被卡住了。我想我需要使用MultiBind才能使它工作?我的文件名是ID +「_tn」+文件擴展名,這是我的代碼。DataGrid和MultiBind

  <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

我主要使用列表視圖,但也有一對夫婦的方式來做到這一點。一種方法是在數據綁定時使用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()) %>'