You can make use of <asp:ImageField/> within the the Gridview to achieve this. So your markup will look like
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:ImageField DataImageUrlField="Value" ControlStyle-Width="100" ControlStyle-Height="100" HeaderText="My Image" />
</Columns>
</asp:GridView>
In your C# code you can use List to add the images. So something as simple as
List<ListItem> files = new List<ListItem>();
files.Add(new ListItem("~/Images/SomeImage.jpg"));
GridView2.DataSource = files;
GridView2.DataBind();
This will only add one image to the grid. If you want to add all the images to the grid that are in a particular directory then just use a foreach loop.
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Images/"));
List<ListItem> files = new List<ListItem>();
foreach (string filePath in filePaths)
{
string fileName = Path.GetFileName(filePath);
files.Add(new ListItem(fileName, "~/Images/" + fileName));
}
GridView2.DataSource = files;
GridView2.DataBind();
dr["PictureURL"] = ResolveUrl("~/DisplayingImages/Images/Winter.jpg");