这是一个场景,我已经为时间和时间创建了一个程序
一个人早上7点进入,下午2点离开PERSON A |上午7:00 |下午2点
人a在下午3点再次进入
PERSON A |下午3:00 |
当我点击超时按钮时,它会更新超时列,当它出现时,A人的超时都会更新。
这是我的代码
protected void EMPLOYEERECORD_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label lblEditEmpName = (Label)EMPLOYEERECORD.Rows[e.RowIndex].FindControl("lblEditEmpName");
Label lblEditTimeOut = (Label)EMPLOYEERECORD.Rows[e.RowIndex].FindControl("lblEditTimeOut");
TextBox txtEditRemarks = (TextBox)EMPLOYEERECORD.Rows[e.RowIndex].FindControl("txtEditRemarks");
DatabaseModule.SQcon.Open();
string cmdstr = "update dbo.RecordEmployee set TIME_OUT=@timeout, REMARKS=@editRemarks where EMPLOYEE_NAME =@empname";
SqlCommand cmd = new SqlCommand(cmdstr, DatabaseModule.SQcon);
cmd.Parameters.AddWithValue("@empname", lblEditEmpName.Text);
cmd.Parameters.AddWithValue("@editRemarks", txtEditRemarks.Text);
cmd.Parameters.AddWithValue("@timeout", DateTime.Now.ToString("T"));
cmd.ExecuteNonQuery();
DatabaseModule.SQcon.Close();
EMPLOYEERECORD.EditIndex = -1;
BindData();
}
如何仅更新所选行?
答案 0 :(得分:1)
您需要拥有每个行的密钥。
你的例子:
PERSON A| 7:00 AM| 2PM
PERSON A| 3:00 PM|
您的更新语句将更新具有相同员工姓名的所有行。因此, PERSON A 的更新将更新这两行。
如果您还没有,则需要为每一行(例如一个int)创建一个唯一标识符,以便您只更新特定行。
例如,表结构可以是:
1 | PERSON A| 7:00 AM| 2PM
2 | PERSON A| 3:00 PM|
更新语句将更改为:
update <whatever> where RowId = @rowId