create a template field inside the grid then place another inside the template field then bind the by finding it in rowdatabound event (i-e)
<asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" runat="server" AutoGenerateColumns="False" DataSource="sqldread2">
<Columns>
<asp:TemplateField visible="False">
<ItemTemplate><asp:label ID="lblID" runate="Server" Text='<%#Eval("Id")%>' visible="False" /></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:GridView ID="InnerGrid" runat="Server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="images">
<ItemTemplate>
<asp:Image run="server" ID="Image1" ImageUrl='<%#Bind("SomeField")%>' width="250px" Hieght="200px"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
<Columns>
</asp:GridView>
// code behind
protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblID=e.Row.FindControl("lblID") as Label;
GridView grd=e.Row.FindControl("InnerGrid") as GridView;
if(lblID!=null && grd!=null)
{
String QueryStr = "SELECT * FROM User_Images WHERE Id='" + lblID.Text+ "'";
SqlDataAdapter da=new SqlDataAdapter(QueryStr,yourconnection);
DataTable dt=new DataTable();
da.Fill(dt);
// Request to Database and bind the innerGrid
grd.DataSource=dt;
grd.DataBind();
}
}
}