Yo lo he realizado utilizando el control Datalist, mira a ver si te sirve.
<asp:datalist id="DataList1" runat="server" Width="629px" Height="326px" GridLines="Both" RepeatColumns="3"
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="3"
RepeatDirection="Horizontal" ToolTip="Estas son las últimas fotos adjuntadas según informes de avances de obras">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<HeaderTemplate>
Fotos de Informes de Inspección
</HeaderTemplate>
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<ItemStyle ForeColor="#000066"></ItemStyle>
<ItemTemplate>
<asp:ImageButton id=Imagebutton2 runat="server" Width="200px" Height="180px" ToolTip="" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.ruta") %>' CommandName="Select" ImageUrl='<%# DataBinder.Eval(Container, "DataItem.ruta") %>'>
</asp:ImageButton><BR>
<asp:Label id=lblDescFoto runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Observacion") %>'>
</asp:Label>
</ItemTemplate>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
</asp:datalist>