Hi kats9993,
I have created sample code which fulfill your requirement.
HTML
Product List
<form id="form1" runat="server">
<div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
</div>
<div class="col-md-12">
<div class="col-md-1">
</div>
<div class="col-md-11">
<asp:DataList ID="dlProductList" runat="server" RepeatColumns="3">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<div class="row">
<div class="col-sm-6 col-md-12">
<div class="col-md-12">
<div class="thumbnail">
<a href="#">
<asp:ImageButton ID="Imagebooks" ImageUrl='<%#Eval("Url") %>' OnClick="OnMoreDetails"
Height="180px" Width="250px" CommandArgument='<%#Eval("Id") %>' runat="server" /></a>
<div class="caption">
<h3>
<span>
<%#Eval("Name")%>
</span>
</h3>
<p>
Small Description</p>
<p>
<asp:Button ID="btnView" Text="More Details...." class="btn btn-primary" CommandName='<% #Eval("Id") %>'
runat="server" />
</p>
</div>
</div>
<br />
</div>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:DataList>
</div>
</form>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dlProductList.DataSource = BindRepeater();
dlProductList.DataBind();
}
}
private DataTable BindRepeater()
{
DataTable dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
string query = @"SELECT ID,Name,Url FROM Images";
using (SqlCommand cmd = new SqlCommand(query, con))
{
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
}
}
return dt;
}
protected void OnMoreDetails(object sender, EventArgs e)
{
int id = Convert.ToInt32((sender as ImageButton).CommandArgument);
Response.Redirect("MoreDetails.aspx?Id=" + id);
}
Vb.net
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
dlProductList.DataSource = BindRepeater()
dlProductList.DataBind()
End If
End Sub
Private Function BindRepeater() As DataTable
Dim dt As New DataTable()
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As New SqlConnection(constr)
Dim query As String = "SELECT ID,Name,Url FROM Images"
Using cmd As New SqlCommand(query, con)
Dim sda As New SqlDataAdapter(cmd)
sda.Fill(dt)
End Using
End Using
Return dt
End Function
Protected Sub OnMoreDetails(sender As Object, e As EventArgs)
Dim id As Integer = Convert.ToInt32(TryCast(sender, ImageButton).CommandArgument)
Response.Redirect("MoreDetails.aspx?Id=" + id)
End Sub
Product Details
<form id="form1" runat="server">
<div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
</div>
<div class="media">
<div class="media-left media-middle">
<a href="#">
<asp:Image ID="imgProduct" class="media-object" runat="server" />
</a>
</div>
<div class="media-body">
<h4 class="media-heading">
<asp:Label ID="lblProductName" runat="server" />
</h4>
<asp:Label ID="lblDescription" Text="Full details here...." runat="server" />
</div>
</div>
</form>
C#
public int productId
{
get
{
return Request.QueryString["Id"].ToString() != "" ? Convert.ToInt32(Request.QueryString["Id"].ToString()) : 0;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.BindRepeater();
}
}
private void BindRepeater()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
string query = @"SELECT ID,Name,Url,CategoryName FROM Images WHERE Id=@PId";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@PId", productId);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
imgProduct.ImageUrl = dt.Rows[0]["Url"].ToString();
lblProductName.Text = dt.Rows[0]["Name"].ToString();
}
}
Vb.net
Public ReadOnly Property productId() As Integer
Get
Return If(Request.QueryString("Id").ToString() <> "", Convert.ToInt32(Request.QueryString("Id").ToString()), 0)
End Get
End Property
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
Me.BindRepeater()
End If
End Sub
Private Sub BindRepeater()
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As New SqlConnection(constr)
Dim query As String = "SELECT ID,Name,Url,CategoryName FROM Images WHERE Id=@PId"
Dim cmd As New SqlCommand(query, con)
cmd.Parameters.AddWithValue("@PId", productId)
Dim sda As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
sda.Fill(dt)
imgProduct.ImageUrl = dt.Rows(0)("Url").ToString()
lblProductName.Text = dt.Rows(0)("Name").ToString()
End Using
End Sub
Screenshot
