Hi NisarKhan,
Refer below sample code.
HTML
<table>
<asp:Repeater ID="OuterRepeater" runat="server" OnItemDataBound="OuterRepeater_ItemDataBound">
<ItemTemplate>
<tr>
<td class="style3">
<%# Eval("StudentID") %>
</td>
<td class="style4">
<%# Eval("Name") %>
</td>
<asp:HiddenField ID="hfStudentID" runat="server" Value='<%#Eval("StudentID")%>' />
<asp:Repeater ID="InnerRepeaterCourseResults" runat="server" OnItemDataBound="InnerRepeaterCourseResults_ItemDataBound">
<ItemTemplate>
<td class="style31" colspan="0" align="center">
<table border="Black" width="100%" style="border: 0px" align="center">
<td align="center">
<asp:Label ID="lblcourse" runat="server" Text='<%# Eval("ObtainedMarks") %>' ForeColor="#0066FF"
CssClass="test"></asp:Label>
</td>
</table>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<asp:Literal ID="litTotal" runat="server"></asp:Literal>
</ItemTemplate>
</asp:Repeater>
</table>
Namespaces
C#
using System.Data;
VB.Net
Imports System.Data
Code
C#
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
dt.Columns.AddRange(new DataColumn[] { new DataColumn("StudentID", typeof(int)), new DataColumn("Name", typeof(string)), new DataColumn("ObtainedMarks", typeof(int)) });
dt.Rows.Add(1, "A", 100);
dt.Rows.Add(2, "B", 200);
dt.Rows.Add(3, "C", 300);
OuterRepeater.DataSource = dt;
OuterRepeater.DataBind();
}
}
protected void OuterRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string id = (e.Item.FindControl("hfStudentID") as HiddenField).Value;
Repeater InnerRepeaterCourseResults = e.Item.FindControl("InnerRepeaterCourseResults") as Repeater;
InnerRepeaterCourseResults.DataSource = dt.Select("StudentID=" + id + "").CopyToDataTable();
InnerRepeaterCourseResults.DataBind();
}
}
protected void InnerRepeaterCourseResults_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater repeater = (Repeater)sender;
RepeaterItem item = (RepeaterItem)repeater.NamingContainer;
(item.FindControl("litTotal") as Literal).Text = (e.Item.FindControl("lblcourse") as Label).Text;
}
}
VB.Net
Private dt As DataTable = New DataTable()
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Not Me.IsPostBack Then
dt.Columns.AddRange(New DataColumn() {New DataColumn("StudentID", GetType(Integer)), New DataColumn("Name", GetType(String)), New DataColumn("ObtainedMarks", GetType(Integer))})
dt.Rows.Add(1, "A", 100)
dt.Rows.Add(2, "B", 200)
dt.Rows.Add(3, "C", 300)
OuterRepeater.DataSource = dt
OuterRepeater.DataBind()
End If
End Sub
Protected Sub OuterRepeater_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
Dim id As String = (TryCast(e.Item.FindControl("hfStudentID"), HiddenField)).Value
Dim InnerRepeaterCourseResults As Repeater = TryCast(e.Item.FindControl("InnerRepeaterCourseResults"), Repeater)
InnerRepeaterCourseResults.DataSource = dt.[Select]("StudentID=" & id & "").CopyToDataTable()
InnerRepeaterCourseResults.DataBind()
End If
End Sub
Protected Sub InnerRepeaterCourseResults_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
Dim repeater As Repeater = CType(sender, Repeater)
Dim item As RepeaterItem = CType(repeater.NamingContainer, RepeaterItem)
TryCast(item.FindControl("litTotal"), Literal).Text = (TryCast(e.Item.FindControl("lblcourse"), Label)).Text
End If
End Sub