Hi  cywa,
I have created a sample which full fill your requirement you need to modify the code according to your need.
SQL
CREATE TABLE [Images](
	[Id] [int] IDENTITY(1,1) ,
	[Name] [varchar](30) NOT NULL,
	[Url] [nvarchar](200) NOT NULL,
	[CategoryId] [int] NULL,
	[CategoryName] [VARCHAR](50) NULL,
)
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 714', N'http://farm3.staticflickr.com/2854/10380193164_9b65e4c5ed_n.jpg', 1,'First Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 707', N'http://farm8.staticflickr.com/7395/10380186284_4f9ac522ed_n.jpg', 1,'First Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 716', N'http://farm8.staticflickr.com/7424/10380408813_3cd984570d_n.jpg', 1,'First Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Blue Columbine', N'http://farm4.staticflickr.com/3723/8986453414_a869ddc3aa_n.jpg', 1,'First Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'1 January 2012 007', N'http://farm8.staticflickr.com/7130/6885958326_ecbb33e962_n.jpg', 2,'Second Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'1 January 2012 001', N'http://farm8.staticflickr.com/7051/7032054587_5f15e32a10_n.jpg', 2,'Second Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'1 January 2012 013', N'http://farm8.staticflickr.com/7228/6885959482_670fb32b58_n.jpg', 2,'Second Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'1 January 2012 017', N'http://farm8.staticflickr.com/7120/7032057469_ce0c1620d4_n.jpg', 2,'Second Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 065', N'http://farm3.staticflickr.com/2828/10379529486_7abd3b99ef_n.jpg', 3,'Third Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 053', N'http://farm4.staticflickr.com/3723/10379498815_2acedf4c6c_n.jpg', 3,'Third Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 595', N'http://farm8.staticflickr.com/7397/10379841244_ec8c68ccc4_n.jpg', 3,'Third Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 227', N'http://farm6.staticflickr.com/5528/10379655586_2a95e5f127_n.jpg', 3,'Third Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 192', N'http://farm3.staticflickr.com/2837/10379605235_5e95702e08_n.jpg', 4,'Fourth Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 249', N'http://farm3.staticflickr.com/2820/10379652095_983088cf4c_n.jpg', 4,'Fourth Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 254', N'http://farm8.staticflickr.com/7380/10379642624_89b111ef11_n.jpg', 4,'Fourth Category')
INSERT [Images] ([Name], [Url], [CategoryId],[CategoryName]) VALUES (N'Fall 525', N'http://farm8.staticflickr.com/7460/10379808224_336a427151_n.jpg', 4,'Fourth Category')
HTML
<div>
    <asp:DataList ID="dlImages" runat="server" OnItemDataBound="dlImages_ItemDataBound">
        <ItemTemplate>
            <div>
                <%# Eval("CategoryName") %>
                <asp:HiddenField ID="hfCategoryId" Value='<%# Eval("CategoryId") %>' runat="server" />
            </div>
            <div>
                <ul id="mycarousel" class="jcarousel-skin-tango">
                    <asp:Repeater ID="rptImages" runat="server">
                        <ItemTemplate>
                            <li>
                                <img alt="" style='height: 75px; width: 75px' src='<%# Eval("Url") %>' />
                            </li>
                        </ItemTemplate>
                    </asp:Repeater>
                </ul>
            </div>
            <br />
        </ItemTemplate>
    </asp:DataList>
</div>
<div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" src="http://cdn.jsdelivr.net/jcarousel/0.2.8/jquery.jcarousel.min.js"></script>
    <link href="http://cdn.jsdelivr.net/jcarousel/0.2.8/skins/tango/skin.css" rel="Stylesheet" />
    <script type="text/javascript">
        $(function () {
            $('[id*=mycarousel]').jcarousel();
        });
    </script>
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindDataList();
    }
}
protected void dlImages_ItemDataBound(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        HiddenField hfCategoryId = e.Item.FindControl("hfCategoryId") as HiddenField;
        Repeater rptImages = e.Item.FindControl("rptImages") as Repeater;
        rptImages.DataSource = BindRepeater(hfCategoryId.Value);
        rptImages.DataBind();
    }
}
private void BindDataList()
{
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        string query = "SELECT [CategoryName],[CategoryId] FROM Images GROUP BY [CategoryName],[CategoryId] ORDER BY [CategoryId]";
        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            dlImages.DataSource = dt;
            dlImages.DataBind();
        }
    }
}
private DataTable BindRepeater(string categoryId)
{
    DataTable dt = new DataTable();
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        string query = @"SELECT [Url] FROM [Images] WHERE CategoryId = @CategoryId";
        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.AddWithValue("@CategoryId", categoryId.Trim());
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(dt);
        }
    }
    return dt;
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs)
	If Not IsPostBack Then
		BindDataList()
	End If
End Sub
Protected Sub dlImages_ItemDataBound(sender As Object, e As DataListItemEventArgs)
	If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
		Dim hfCategoryId As HiddenField = TryCast(e.Item.FindControl("hfCategoryId"), HiddenField)
		Dim rptImages As Repeater = TryCast(e.Item.FindControl("rptImages"), Repeater)
		rptImages.DataSource = BindRepeater(hfCategoryId.Value)
		rptImages.DataBind()
	End If
End Sub
Private Sub BindDataList()
	Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
	Using con As New SqlConnection(constr)
		Dim query As String = "SELECT [CategoryName],[CategoryId] FROM Images GROUP BY [CategoryName],[CategoryId] ORDER BY [CategoryId]"
		Using cmd As New SqlCommand(query, con)
			Dim sda As New SqlDataAdapter(cmd)
			Dim dt As New DataTable()
			sda.Fill(dt)
			dlImages.DataSource = dt
			dlImages.DataBind()
		End Using
	End Using
End Sub
Private Function BindRepeater(categoryId As String) 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 [Url] FROM [Images] WHERE CategoryId = @CategoryId"
		Using cmd As New SqlCommand(query, con)
			cmd.Parameters.AddWithValue("@CategoryId", categoryId.Trim())
			Dim sda As New SqlDataAdapter(cmd)
			sda.Fill(dt)
		End Using
	End Using
	Return dt
End Function
ScreenShot
