2012-05-02 5 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

私は主にListViewを使用していますが、これを達成するにはいくつかの方法があります。 1つの方法は、onrowdataboundイベントの行インデックスを使用して値をデータバインドおよび取得するときにDataKeysを使用することです。

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()) %>' 
別のオプションは、のようなものを分離コードでヘルパーメソッドを作成し、データバインディングの間にそれを呼び出すことであろう