Hi yara,
I have created a sample which full fill your requirement
HTML
<div>
<asp:GridView ID="gvAttendance" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:TemplateField HeaderText="Attendance">
<ItemTemplate>
<asp:CheckBox ID="chkAttendance" OnCheckedChanged="LoggedIn" AutoPostBack="true"
runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LoggedInTime">
<ItemTemplate>
<asp:Label ID="lblLoggedInDateTime" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
<asp:Button ID="btnSave" Text="Save" runat="server" OnClick="btnSave_Click" />
<br />
<asp:Label ID="lblMessage" ForeColor="Green" runat="server" />
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id"), new DataColumn("Name") });
dt.Rows.Add(1, "John Hammond");
dt.Rows.Add(2, "Mudassar Khan");
dt.Rows.Add(3, "Suzanne Mathews");
dt.Rows.Add(4, "Robert Schidner");
gvAttendance.DataSource = dt;
gvAttendance.DataBind();
}
}
protected void LoggedIn(object sender, EventArgs e)
{
CheckBox checkedCheckBox = (sender as CheckBox);
if (checkedCheckBox.Checked)
{
GridViewRow checkedRow = (checkedCheckBox.NamingContainer as GridViewRow);
Label lblLoggedInDateTime = checkedRow.FindControl("lblLoggedInDateTime") as Label;
lblLoggedInDateTime.Text = DateTime.Now.ToString();
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in gvAttendance.Rows)
{
string id = row.Cells[0].Text;
string name = row.Cells[1].Text;
string loggedInTime = (row.FindControl("lblLoggedInDateTime") as Label).Text;
InsertData(id, name, loggedInTime);
}
lblMessage.Text = "All Records Saved Successfully!!";
}
public void InsertData(string id, string name, string loggedInTime)
{
//Your saving code.
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Id"), New DataColumn("Name")})
dt.Rows.Add(1, "John Hammond")
dt.Rows.Add(2, "Mudassar Khan")
dt.Rows.Add(3, "Suzanne Mathews")
dt.Rows.Add(4, "Robert Schidner")
gvAttendance.DataSource = dt
gvAttendance.DataBind()
End If
End Sub
Protected Sub LoggedIn(sender As Object, e As EventArgs)
Dim checkedCheckBox As CheckBox = TryCast(sender, CheckBox)
If checkedCheckBox.Checked Then
Dim checkedRow As GridViewRow = TryCast(checkedCheckBox.NamingContainer, GridViewRow)
Dim lblLoggedInDateTime As Label = TryCast(checkedRow.FindControl("lblLoggedInDateTime"), Label)
lblLoggedInDateTime.Text = DateTime.Now.ToString()
End If
End Sub
Protected Sub btnSave_Click(sender As Object, e As EventArgs)
For Each row As GridViewRow In gvAttendance.Rows
Dim id As String = row.Cells(0).Text
Dim name As String = row.Cells(1).Text
Dim loggedInTime As String = TryCast(row.FindControl("lblLoggedInDateTime"), Label).Text
InsertData(id, name, loggedInTime)
Next
lblMessage.Text = "All Records Saved Successfully!!"
End Sub
Public Sub InsertData(id As String, name As String, loggedInTime As String)
'Your saving code.
End Sub
Screenshot