Hi Alladin,
Check the below code i have created.
HTML
<div>
<asp:GridView ID="grdAttendanceDetails" AutoGenerateColumns="false" runat="server"
Caption="Attendance Details Grid">
<Columns>
<asp:TemplateField HeaderText="User" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblUsername" Text='<%#Eval("Username")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Check In" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblCheckIn" Text='<%#Eval("CheckIn")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Check Out" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblCheckOut" Text='<%#Eval("CheckOut")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Working Hours" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:Label runat="server" ID="lblWorkingHours" Text='<%# calculateWorkingHours(Eval("CheckIn"),Eval("CheckOut")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Outdoor Hours" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:Label runat="server" ID="lblOutdoorHours" Text='<%# calculateOutdoorHours(Eval("CheckOut"),Eval("NextCheckIn")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<br />
<div>
<asp:GridView ID="grdAttendance" EmptyDataText="No Record Found!" AutoGenerateColumns="false"
runat="server" Caption="Attendance Grid">
<Columns>
<asp:TemplateField HeaderText="User" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblUsername" Text='<%#Eval("Username")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Working Hours" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblWorkingHours"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Outdoor Hours" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblOutdoorHours"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label runat="server" ID="lblStatus" Text='<%#Eval("Status")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Details" ItemStyle-HorizontalAlign="center">
<ItemTemplate>
<asp:LinkButton Enabled='<%# Convert.ToBoolean(Eval("Status")) %>' runat="server"
ID="lnkPopup" CommandName="Detail" CommandArgument='<%# Eval("UserId") %>' Text="Details"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[6] {
new DataColumn("UserId", typeof(int)),
new DataColumn("Username", typeof(string)),
new DataColumn("CheckIn", typeof(string)),
new DataColumn("CheckOut", typeof(string)),
new DataColumn("NextCheckIn", typeof(string)),
new DataColumn("Status", typeof(bool)) });
dt.Rows.Add(1, "ABC", "08:00", "12:00", "12:30", 1);
dt.Rows.Add(2, "DEF", "08:15", "12:05", "12:25", 0);
dt.Rows.Add(3, "GHI", "08:10", "11:55", "12:37", 0);
dt.Rows.Add(4, "JKL", "08:05", "12:02", "12:31", 1);
dt.Rows.Add(5, "MNO", "08:20", "12:06", "12:29", 0);
grdAttendanceDetails.DataSource = dt;
grdAttendanceDetails.DataBind();
grdAttendance.DataSource = dt;
grdAttendance.DataBind();
for (int i = 0; i < grdAttendanceDetails.Rows.Count; i++)
{
Label workingHours = (Label)grdAttendanceDetails.Rows[i].FindControl("lblWorkingHours");
Label outdoorHours = (Label)grdAttendanceDetails.Rows[i].FindControl("lblOutdoorHours");
for (int j = 0; j < grdAttendance.Rows.Count; j++)
{
Label workingHours1 = (Label)grdAttendance.Rows[i].FindControl("lblWorkingHours");
Label outdoorHours1 = (Label)grdAttendance.Rows[i].FindControl("lblOutdoorHours");
workingHours1.Text = workingHours.Text;
outdoorHours1.Text = outdoorHours.Text;
}
}
}
}
string TotalWorkingHours = null;
string TotalOutdoorHours = null;
protected string calculateWorkingHours(object CheckIn, object CheckOut)
{
if (CheckOut != DBNull.Value)
{
IFormatProvider enGbDateFormat = new CultureInfo("en-GB").DateTimeFormat;
TimeSpan duration = DateTime.Parse(CheckOut.ToString()).Subtract(DateTime.Parse(CheckIn.ToString()));
if (TotalWorkingHours == null)
{
TotalWorkingHours = duration.ToString();
}
else
{
TotalWorkingHours = TotalWorkingHours + duration.ToString();
}
return duration.ToString();
}
else
{
return "";
}
}
protected string calculateOutdoorHours(object CheckOut, object NextCheckIn)
{
if (NextCheckIn != DBNull.Value)
{
IFormatProvider enGbDateFormat = new CultureInfo("en-GB").DateTimeFormat;
TimeSpan duration = DateTime.Parse(NextCheckIn.ToString()).Subtract(DateTime.Parse(CheckOut.ToString()));
if (TotalOutdoorHours == null)
{
TotalOutdoorHours = duration.ToString();
}
else
{
TotalOutdoorHours = TotalOutdoorHours + duration.ToString();
}
return duration.ToString();
}
else
{
return "";
}
}
Screenshot
