2014-04-02 58 views
2

下面是这种情况,我创建了一个计划,在时间和超时更新选择的行上asp.net gridview的

一个人在早上7点进入和离开下午2点

PERSON A |上午7:00 | 2PM

人a在3pm再次进入

PERSON A | 3:00 PM |

当我点击超时按钮时,它会更新超时列,当它时,人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 [email protected], [email protected] where EMPLOYEE_NAME [email protected]"; 
     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(); 



    } 

我怎么能只更新所选行?

回答

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语句将变为:

update <whatever> where RowId = @rowId