仅更新asp.net gridview上的选定行

仅更新asp.net gridview上的选定行,asp.net,Asp.net,这是一个场景,我已经创建了一个用于超时和超时的程序 有人早上7点进入,下午2点离开 A人|上午7:00 |下午2:00 下午3点a人再次进入 A人|下午3:00 | 当我单击超时按钮时,它将更新超时列,当它更新时,人员A的超时都将更新 这是我的密码 protected void EMPLOYEERECORD_RowUpdating(object sender, GridViewUpdateEventArgs e) { Label lblEditEmpName = (Label)

这是一个场景,我已经创建了一个用于超时和超时的程序

有人早上7点进入,下午2点离开

A人|上午7:00 |下午2:00

下午3点a人再次进入

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();



    }

如何仅更新所选行

每一行都需要一个键

你的例子是:

PERSON A| 7:00 AM| 2PM
PERSON A| 3:00 PM|
update语句将更新具有相同员工姓名的所有行。因此,人员A的更新将更新两行

如果还没有,则需要为每一行创建一个唯一的标识符(例如int),以便只更新特定的行

例如,表结构可以是:

1 | PERSON A| 7:00 AM| 2PM
2 | PERSON A| 3:00 PM|
更新语句将更改为:

update <whatever> where RowId = @rowId
更新其中RowId=@RowId