c# - 如何从 datagridview 中设置选定的单元格值并使用它插入数据库?
问题描述
我有一个datagridview,我想从中选择要从单元格中插入到表中的员工ID值。我有两个表,员工具有员工ID(主键),员工姓名和出勤,具有员工ID(FK),日期、预计时间、时间和时间状态。我想插入一条由员工 ID 完成的员工出勤记录。因此,如果我选择单元格(员工 ID),我将为该特定员工插入。
这是我设置值的代码:
private void button2_Click(object sender, EventArgs e)
{
Attendance att = new Attendance();
int id;
try
{
att.SetEmployeeId(id = Convert.ToInt32(dataGridView1.CurrentCell));
att.SetWorkDate(work_date_picker.Text);
att.SetExpectedTime(expected_time_picker.Text);
att.SetTimeIn(time_in_picker.Text);
Database database = new Database();
database.OpenConnection();
database.AddAttendancetable(att);
database.CloseConnection();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
this.Close();
}
这是我的数据库操作代码:
public bool AddAttendanceToTable(Attendance rowtosave, SqlConnection conn,
SqlCommand cmd)
{
Trace.WriteLine("saving to table");
cmd.CommandText = "Insert Into Attendance
(emp_id,work_date,expected_time,time_in)
values(@emp_id,@work_date,@expected_time,@time_in)";
cmd.Parameters.AddWithValue("@emp_id", rowtosave.GetEmployeeId());
cmd.Parameters.AddWithValue("@work_date", rowtosave.GetWorkDate());
cmd.Parameters.AddWithValue("@expected_time",
rowtosave.GetExpectedTime());
cmd.Parameters.AddWithValue("@time_in", rowtosave.GetTimeIn());
try
{
cmd.Connection = conn;
cmd.ExecuteReader();
MessageBox.Show("Data Added Successfully");
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
return true;
}
void AddAttendancetable(Attendance
attendance)
{
AddAttendance addAttendance = new
AddAttendance();
addAttendance.AddAttendanceToTable
(attendance,conn, cmd);
}
我收到错误无法将 datagridview textboxcell 转换为类型 system.Iconvertible
解决方案
这对我有用
if (dataGridView1.SelectedCells.Count >0)
{
int selectedrowindex = dataGridView1.SelectedCells[0].RowIndex;
DataGridViewRow selectedRow = dataGridView1.Rows[selectedrowindex];
att.SetEmployeeId(id = Convert.ToInt32(selectedRow.Cells["emp_id"].Value));
att.SetWorkDate(work_date_picker.Text);
att.SetExpectedTime(expected_time_picker.Text);
att.SetTimeIn(time_in_picker.Text);
Database database = new Database();
database.OpenConnection();
database.AddAttendancetable(att);
database.CloseConnection();
}
推荐阅读
- ruby-on-rails - ruby on rails - fixture_file_upload 不适用于 CarrierWave 的控制器测试
- bash - Bash 脚本获得权限被拒绝
- laravel - 如何在 laravel 5 上查询出发和到达时间?
- java - RemoteViews.setImageViewResource 不起作用?
- html - 在桌面和移动设备中具有全宽抽屉的响应式固定宽度 3 列布局
- vue.js - 构建vue js项目后未创建dist文件夹
- c++ - if constexpr 用于可变长度元素 Get<>
- javascript - 在 PHP 本身中将 PHP 数组转换为 JS 数组
- java - 线程不正确行为中的 Java ArrayList
- python - 模式 web 无法通过类名定位元素