如何针对gridview的一列插入特定值

时间:2017-03-15 08:00:08

标签: c# asp.net sql-server gridview

我在SQL中有一个名为: Employee_Shift_Details 的表,其中包含以下列:

[Shift_Id],[Emp_Name],[Group_Name],[Emp_Id],[Time],[Date],[DayOfWeek] 
//where **Shift_Id** is primary key. 

现在我有一个包含一些数据的Gridview。 gridView看起来像这样:

DayOfWeek        Date        8:45AM-6PM             2PM-11PM
Wednesday       1-Mar          John                  Olivia
Thursday        2-Mar          John                  Olivia
Friday          3-Mar          John                  Olivia
Saturday        4-Mar          Davis                 Clark          
Sunday          5-Mar          Davis                 Clark   

此处所有员工均为A组。

我想将此数据插入 Employee_Shift_Details 表中,但

  • 约翰和戴维斯的时间栏应该有8:45AM-6PM,因为他们在上午8:45 PM -PM工作班次
  • Olivia和Clark的
  • 2PM-11PM(如gridview所示)。

任何人都可以帮助我如何实现这一目标? 在插入之前,应检查记录是否已存在,然后不插入。

PS :Emp_Id暂时可以留空。

2 个答案:

答案 0 :(得分:0)

您可以添加名称为tblshifts的表格并定义每个班次的开始和结束,然后在Employee_Shift_Details使用shiftIDrecomnded使用employeeID而不是名称

答案 1 :(得分:0)

尝试通过选择第3列中的值Emp_Namecolumn[3].Name作为Time来遍历网格视图(此处需要进行一些投射)。第4栏(下午2点至11点)也是如此。

更常见的是,您可以为网格划分2个循环1,为具有不同Time值的列执行另一个循环。

修改

foreach (GridViewRow gvRow in gv.rows) {
    //
    var newRow = ds.Tables("Employee_Shift_Details").NewRow;

    //All the values below need to be casted properly
    newRow("DayOfWeek") = gvRow.cells[1].text;
    newRow("Date") = gvRow.cells[2].text;
    newRow("Emp_Name") = gvRow.Cells[3].Text;
    newRow("Time") = gv.HeaderRow.Cells[3].Text;

    //Save the newRow to the database
}

2PM-11PM替换3替换为4,或者如果您有超过2列时间转换(如果您希望如此),则添加另一个循环层。