Vb.net 在Datagridview中自动分配员工编号
我有1个DataGridView和3列,1个按钮命名为AssignID,1个数据库和EmployeeList表 Datagridview的列 第1列=员工ID 第2列=员工姓名 第3列=部门 我正在将excel中EmployeeName和Department的数据粘贴到DataGridView中,将第1列留空。我的问题是,当我按下AssignID按钮时,如何在DataGridView中为每个员工自动分配EmployeeID。数据库中的最后一个IDNumber是10000 谢谢你的帮助。我还在学习vb.net。提前谢谢 Im使用以下代码:Vb.net 在Datagridview中自动分配员工编号,vb.net,datagridview,Vb.net,Datagridview,我有1个DataGridView和3列,1个按钮命名为AssignID,1个数据库和EmployeeList表 Datagridview的列 第1列=员工ID 第2列=员工姓名 第3列=部门 我正在将excel中EmployeeName和Department的数据粘贴到DataGridView中,将第1列留空。我的问题是,当我按下AssignID按钮时,如何在DataGridView中为每个员工自动分配EmployeeID。数据库中的最后一个IDNumber是10000 谢谢你的帮助。我还在学习
Private Sub AssignID_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AssignID.Click
Dim Dbcon As New OleDbConnection(connStr)
Dbcon.Open()
Dim query As String
Dim dbup As New OleDbCommand
Try
query = "SELECT Max (EmployeeID) from EmployeeList"
dbup = New OleDbCommand(query, Dbcon)
Dim EmpID As Integer
EmpID = dbup.ExecuteScalar
Dim i2 As Integer
i2 = Me.NewEmployeesDataGridview.CurrentRow.Index
NewEmployeesDataGridview.Item(0, i2).Value() = EmpID
For x As Integer = 0 To NewEmployeesDataGridview.Rows.Count - 2
NewEmployeesDataGridview.Rows(x).Cells(0).Value = NewEmployeesDataGridview.Rows(0).Cells(0).Value + 1
Next
NewEmployeesDataGridview.AllowUserToAddRows = False
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
我以前从未使用过这种方法,但我可能会使用数据适配器。在数据行和表中思考更容易 例如:
Dim connection As SqlConnection = New sqlconnection()
connection.ConnectionString = "<whatever your connection string is>"
connection.Open()
Dim adp As SqlDataAdapter = New SqlDataAdapter _
(SELECT Max (EmployeeID) from EmployeeList)
Dim ds As DataSet = New DataSet()
'fill adapter
adp.Fill(ds)
Dim DT as datatable = ds.Tables(0)
因此,在DT中,您将有一个datatable,假设只有一行包含您请求的员工作为其内容。然后您可以像这样获取值:
Dim empID as integer = DT.rows(0).item("<name of SQL column with employee ID>")
然后遍历datagridview中的每一行,并查找包含要更改的员工的正确行
NewEmployeesDataGridview.Rows(<integer of row>).Cells(<integer of column with IDs>).Value = empID
这只是一种方法。您只需找到该员工所在的行,并将其分配给for循环中的适当单元格即可。或者使用LINQ,如果你能胜任的话,也可以使用distinct来更快地找到它 如果表中最后分配的ID是10000,那么下一个ID是10000+1,即10001。因此:
EmpID = dbup.ExecuteScalar + 1
'.Note #1: The code that is commented is not necessary
'Dim i2 As Integer
'i2 = Me.NewEmployeesDataGridview.CurrentRow.Index
'
'NewEmployeesDataGridview.Item(0, i2).Value() = EmpID
'.Note #1.
'To Rows.Count - 1 throw the correct result:
NewEmployeesDataGridview.AllowUserToAddRows = False
'For each row in the datagridview, we increase by one each ID from the last ID
For x As Integer = 0 To NewEmployeesDataGridview.Rows.Count - 1
NewEmployeesDataGridview.Rows(x).Cells(0).Value = EmpID + x
Next
我对你的问题有点困惑。您是否正在尝试获取如何在datagridview单元格中用合适的人获取合适的ID?现在可以了。非常感谢Aprendiendo.NET!