C# 生成HTML表-行控件

C# 生成HTML表-行控件,c#,html,html-table,C#,Html,Html Table,我正在编写一个应用程序来生成目录的“图像摘要”。图像摘要是一个HTML文档,其表包含该目录的图像。我正在尝试使用StreamWriter创建HTML文档。我希望每行()包含6个图像。我怎样才能做到这一点?我已经找过了,找不到有帮助的东西 我会用一个。像这样的事情应该让你开始: <asp:ListView runat="server" ID="ListView1" DataSourceID="SqlDataSource1"> <LayoutTemplate> &

我正在编写一个应用程序来生成目录的“图像摘要”。图像摘要是一个HTML文档,其表包含该目录的图像。我正在尝试使用StreamWriter创建HTML文档。我希望每行(
)包含6个图像。我怎样才能做到这一点?我已经找过了,找不到有帮助的东西

我会用一个。像这样的事情应该让你开始:

<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的tr。很明显,您希望创建六个带有图像的td,而不是一个。

在我看来,最简单的方法是从一开始。这将返回文件路径的
字符串[]

从那里,您可以将该集合绑定到中继器。有关显示每行n个元素的巧妙方法,请参见的答案。该线程中还有一篇文章的链接,展示了如何使用ListView进行操作。

混乱的示例。。但是有效(我假设您不是像其他人假设的那样从ASP.NET执行此操作,因为您使用的是
StreamWriter
):

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" });