……
If nd.Level = 1 Then
nd.Checked = (DataTables("").Find("面试室='" & nd.Text & "' and 面试序号 is not null") IsNot Nothing)
nd.ForeColor = IIf(nd.Checked, Color.Red, Color.Black)
End If
……
有点蓝老师, 第一节点为天数,共三天,第二节点为第几面试室(每天都有相同的面试室),判断第几天,第几面试室的面试序号是否为空,如果不为空,则复选框选中,否则不选中;然后,再判断第几天第几面试室的面试成绩是否为空,如果不为空,则目录树显示为红色,否则显示黑色,我修改了下述代码,现在是当第一天的第一面试室面试序号为空时,第二天的第一面试室不为空时,目录树的第一天的第一面试室复选框还是选中了,在查找时,怎么加上第一层的节点判断,谢谢。代码如下:(出错)
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("笔试成绩", "天数|面试室|分组")
trv.Nodes.Insert("显示所有行",0)
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Level = 1 Then
nd.Checked = (DataTables("笔试成绩").Find("天数='"& nd.ParentNode.text & "'and 面试室='" & nd.Text & "' and 面试序号 is not null") IsNot Nothing)
End If
Next
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Level = 1 And nd.Checked = (DataTables("笔试成绩").Find("天数='"& nd.ParentNode.text & "'and 面试室='" & nd.Text & "' and 面试成绩 is not null") IsNot Nothing) Then
nd.ForeColor = IIf(nd.Checked, Color.Red, Color.Black)
End If
Next
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("笔试成绩", "天数|面试室|分组")
trv.Nodes.Insert("显示所有行",0)
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Level = 1 Then
nd.Checked = (DataTables("笔试成绩").Find("天数='"& nd.ParentNode.text & "' and 面试室='" & nd.Text & "' and 面试序号 is not null") IsNot Nothing)
nd.ForeColor = IIf(nd.Checked, Color.Red, Color.Black)
End If
Next
有点蓝老师,给目录树变红色,是依据“面试成绩”列是否为空,如果不为空,则标红,否则标黑,上述代码,是只要面试序号不为空,都标红,这不是我需要的,谢谢
有点蓝老师,是这样的吗?请指教代码:For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Level = 1 Then
nd.Checked = (DataTables("笔试成绩").Find("天数='"& nd.ParentNode.text & "' and 面试室='" & nd.Text & "' and 面试序号 is not null") IsNot Nothing)
End If
Next
For Each nd1 As WinForm.TreeNode In trv.AllNodes
If nd1.Level = 1 Then
nd1.Checked = (DataTables("笔试成绩").Find("天数='"& nd1.ParentNode.text & "' and 面试室='" & nd1.Text & "' and 面试成绩 is not null") IsNot Nothing)
nd1.ForeColor = IIf(nd1.Checked, Color.Red, Color.Black)
End If
Next
不用多此一举,遍历2次,直接把16楼代码面试序号四个字改为面试成绩就行