2013-02-19 2 views
1

디렉토리의 "이미지 요약"을 생성하는 애플리케이션을 작성 중입니다. 이미지 요약은 해당 디렉토리의 이미지가 포함 된 표가있는 HTML 문서입니다. StreamWriter를 사용하여 HTML 문서를 만들려고합니다. 각 행 (<tr>)에 6 개의 이미지가 포함되기를 원합니다. 이것을 어떻게 할 수 있습니까? 나는 수색했고 도움이되는 것을 찾을 수 없다.HTML 테이블 생성 - 행 제어

답변

1

나는 ListView을 사용할 것입니다. 이렇게하면 시작해야합니다.

<asp:ListView runat="server" ID="ListView1" DataSourceID="SqlDataSource1"> 
    <LayoutTemplate> 
    <table runat="server" id="table1" > 
     <tr runat="server" id="itemPlaceholder" ></tr> 
    </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
    <tr runat="server"> 
     <td runat="server"> 
     <asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("ImageUrl") %>' /> 
     </td> 
    </tr> 
    </ItemTemplate> 
</asp:ListView> 

이렇게하면 모든 데이터 행에 대해 단일 td가 생성됩니다. 당신은 분명히 단지 하나가 아닌 6 개의 td를 생성하기를 원할 것입니다.

1

내 의견으로는 가장 쉬운 방법은 Directory.GetFiles()으로 시작하는 것입니다. 파일 경로가 string[]이 반환됩니다.

거기에서 컬렉션을 리피터에 바인딩 할 수 있습니다. 행 당 n 개의 요소 수를 보여주는 매끄러운 방법은 this question에 대한 대답을 참조하십시오. 또한 해당 스레드에서 ListView를 사용하여 수행하는 방법을 보여주는 기사에 대한 링크가 있습니다.

1

지저분한 예 ..하지만 작동합니다 (당신이 StreamWriter을 사용하고 있기 때문에 나는 다른 사람이 추측 한대로, ASP.NET에서이 일을하지 않는 있으리라 믿고있어) :

static void renderHTML(string folder, string outputFile, int imagesPerRow, params string[] extensions) { 
     string[] images = Directory.GetFiles(folder); 

     using (var sw = new StreamWriter(File.OpenWrite(outputFile))) { 
      sw.WriteLine("<!html><head><title>Example</title></head><body><table>"); 
      int counter = 0; 
      sw.Write("<tr>"); 
      foreach (string image in images.Where(x => extensions.Any(y => x.Contains(y)))) { 
       if (counter == imagesPerRow) { 
        sw.Write("</tr>"); 
        sw.Write("<tr>"); 
        counter = 0; 
       } 
       sw.Write("<td style=\"border: 1px solid;\">"); 
       sw.Write(string.Format("<img src=\"{0}\" />", image)); 
       sw.Write("</td>"); 

       counter++; 
      } 
      sw.Write("</tr></table></body></html>"); 
     } 
    } 

당신은 할 수 있습니다 그것을 이렇게 부르십시오 :

renderHTML(@"C:\folder", @"C:\output.html", 6, new string[] { ".jpg", ".png", ".gif" });