【发布时间】:2016-07-09 13:27:46
【问题描述】:
我正在开发一个 vb.net 应用程序,并且我有一个显示员工列表的 dgv。 dgv 有一个未绑定的复选框列,用于为所需操作选择员工。我使用 rowFilter 按部门或位置或用户选择的任何内容过滤列表。
如果用户使用部门 1 过滤并选中他想要的员工旁边的复选框,选择他们,然后过滤到部门 2,选择更多员工,当我们过滤回部门 1 时,选中的员工是不再检查了。
我怎样才能做到这样,一旦检查了员工,您就可以使用其他参数进行过滤,而不会丢失之前的选择。我正在考虑在下一个过滤器之前将每个员工的检查状态保存到数据库中,但我觉得可能是一种更快更简单的方法。有吗?
这是我用来填充 dgv 的代码
sql = "SELECT employee_paysetup.EmployeeNumber AS EmployeeNo, employee_paysetup.FName, employee_paysetup.MName, " _
& "employee_paysetup.LName, (case when employee_paysetup.MName = ' ' then concat(employee_paysetup.FName,' ' , employee_paysetup.LName) else " _
& "concat(employee_paysetup.FName,' ' , employee_paysetup.MName,' ' , employee_paysetup.LName) end) " _
& "AS FullName, costcenters.CostCenterName AS cosName, departments.DepartmentName AS depName, " _
& "positions.PositionName AS posName, locations.LocationName AS locName, CostCenter, Department, Position, EmployeeLocation, PayGroup " _
& "FROM ((((((employee_paysetup LEFT JOIN employees ON employee_paysetup.EmployeeNumber = employees.EmployeeNumber) " _
& "LEFT JOIN costcenters ON employees.CostCenter = costcenters.CostCenterID) " _
& "LEFT JOIN departments ON employees.Department = departments.DepartmentID) " _
& "LEFT JOIN positions ON employees.Position = positions.PositionID) " _
& "LEFT JOIN locations ON employees.EmployeeLocation = locations.LocationID) " _
& "LEFT JOIN paygroups ON employee_paysetup.PayGroup = paygroups.ID) " & filterValue
cmd = New MySqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@Status", "ACTIVE")
da.SelectCommand = cmd
dt.Clear()
da.Fill(dt)
'sort
dt.DefaultView.Sort = "FullName ASC"
dgvEmployees.DataSource = dt.DefaultView
我过滤使用
dt.DefaultView.RowFilter = "myFilter"
【问题讨论】:
-
将员工转换为“视图模型”并添加选定的属性以便您可以绑定它。
-
Crowcoder 能否详细说明一下
-
你应该edit你的帖子添加一些代码来显示你在做什么以及如何做。我们不知道一个细节。
标签: .net vb.net datagridview