从数据库表中取得人事数据后,放在DataTable0中,数据如下:
DataTable0--人事数据:
工号 姓名 职务 入职日期
001 张三 总经理 2007-10-02
003 王五 会计师 2009-05-05
004 赵六 出纳员 2010-06-06
005 陈七 业务员 2013-12-05
从数据库中取得请假单数据,放在DataTable1中,并且绑定到表格DataGridView1上
DataGridView1--请假单录入表格:
工号 姓名 职务 请假起始时间 请假截止时间
005 陈七 业务员 2014-11-15 09:00 2014-11-15 17:00
004
我希望在表格DataGridView1中输入新假单时,输入工号004后,
自动到DataTable0中找到相应人事数据(赵六,出纳员)拷贝到请假表格DataGridView1的相应单元格,以提高录入速度,如下表:
工号 姓名 职务 请假起始时间 请假截止时间
005 陈七 业务员 2014-11-15 09:00 2014-11-15 17:00
004 赵六 出纳员
我尝试写的代码如下:
先在DataGridView1.CellValidating中写
If DataGridView1.Columns(e.ColumnIndex).HeaderText = "工号" And Len(DataGridView1.Item("Column2姓名", e.RowIndex).Value.ToString) > 0
S1 = Trim(DataGridView1(e.ColumnIndex, e.RowIndex).Value.ToString) '获取当前单元格工号的初始值
End If
然后在DataGridView1.CellValidated中写
If DataGridView1.Columns(e.ColumnIndex).HeaderText = "工号" And Len(DataGridView1.Item("Column2姓名", e.RowIndex).Value.ToString) > 0
S2 = Trim(DataGridView1(e.ColumnIndex, e.RowIndex).Value.ToString) '获取当前单元格工号的确认值
If S1 <> S2 And S2 <>"" Then
Dim Row0() As DataRow
SS = "订单号 = '" & S2 & "'"
Row0 = DataTable0.Select(SS)
If Not (Row0 Is Nothing) Then
DataGridView1.Item("Column2姓名", e.RowIndex).Value = Row0(0)("姓名").ToString
DataGridView1.Item("Column2职务", e.RowIndex).Value = Row0(0)("职务").ToString
End If
End if
End If
为了限制输入已手动填入姓名的请假记录被意外修改,上述两个事件代码都加入了如下条件:
If DataGridView1.Columns(e.ColumnIndex).HeaderText = "工号" And Len(DataGridView1.Item("Column2姓名", e.RowIndex).Value.ToString) > 0
此条件运行时偶发错误提示:未处理NullReferenceException未将对象引用设置到对象的实例...
请大侠帮我改进一下代码拓展思路。谢谢!
------解决思路----------------------
判断各个索引处的对象是否为null,判断Value是否为null,如果为null那么ToString会报错
------解决思路----------------------
你把不让修改的设置成只读,readonly=true就好了