Foxtable(狐表)用户栏目专家坐堂 → 想在表打开时,做一些检索操作,并改变样式,怎么写?


  共有2419人关注过本帖树形打印复制链接

主题:想在表打开时,做一些检索操作,并改变样式,怎么写?

帅哥哟,离线,有人找我吗?
ycwk
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1222 积分:8515 威望:0 精华:0 注册:2016/2/2 21:52:00
想在表打开时,做一些检索操作,并改变样式,怎么写?  发帖心情 Post By:2019/1/15 17:21:00 [显示全部帖子]

想在"资产管理表" 显示的时候,分别检索对应的  电脑终端管理表    其它终端管理表  网络交换机管理表  服务器管理表  各表里有没有相同的资产卡片号字段,没有,则改变当前行的颜色,写在drawcell里面,很慢,而且不起作用,要怎么弄?

If e.Row("资产类型")="电脑" And e.Row.IsNull("资产卡片号")=False And e.Row("资产卡片号")<>"N"  Then
  Dim dr As DataRow = DataTables("电脑终端管理表").SQLFind("资产卡片号='" & e.Row("资产卡片号") & "'")
  If dr Is Nothing  Then    
      e.Style = "服务器被删除"
  End If
Else If e.Row("资产类型")="其它" And e.Row.IsNull("资产卡片号")=False And e.Row("资产卡片号")<>"N" Then
  Dim dr As DataRow = DataTables("其它终端管理表").SQLFind("资产卡片号='" & e.Row("资产卡片号") & "'")
  If  dr Is Nothing  Then    '如果提醒间隔超出设定,且任务没完成,也没关闭,则刷红
      e.Style = "服务器被删除"
  End If
Else If e.Row("资产类型")="交换机" And e.Row.IsNull("资产卡片号")=False And e.Row("资产卡片号")<>"N" Then
   Dim dr As DataRow = DataTables("网络交换机管理表").SQLFind("资产卡片号='" & e.Row("资产卡片号") & "'") 
  If dr Is Nothing  Then   
      e.Style = "服务器被删除"
  End If
Else If e.Row("资产类型")="服务器"  And e.Row.IsNull("资产卡片号")=False And e.Row("资产卡片号")<>"N" Then
   Dim dr As DataRow = DataTables("服务器管理表").SQLFind("资产卡片号='" & e.Row("资产卡片号") & "'") 
  If dr Is Nothing  Then    
      e.Style = "服务器被删除"
  End If
End If
[此贴子已经被作者于2019/1/15 17:21:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1222 积分:8515 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/15 17:48:00 [显示全部帖子]

但是我这个资产表,根据资产类型不同,要关联4张不同的表,这要怎么关联到一个字段上啊?

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1222 积分:8515 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/15 17:59:00 [显示全部帖子]

重置列怎么触发呢?在表的afterload事件中?

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1222 积分:8515 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/15 18:05:00 [显示全部帖子]

afterOpenProject事件     表afterLoad事件   这两个事件任意一个都行吗?    我只在看资产管理表的时候 改变在其它表中绑定的行的颜色就行了,其它表数据变化时,应该不用触发重置列事件吧?

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1222 积分:8515 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/17 9:51:00 [显示全部帖子]

 在aftercolchanged事件中用1楼的代码,现在5000多条记录,重置一次要卡半分钟,请问有什么办法优化吗?  在资产卡片号 和资产类型上面加索引行不?

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1222 积分:8515 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/17 10:06:00 [显示全部帖子]

表的datecolChanged 事件:

If e.DataCol.Name = "绑定标志" Then
 If e.DataRow("资产类型")="电脑" And e.DataRow.IsNull("资产卡片号")=False And e.DataRow("资产卡片号")<>"N"  Then
  Dim dr As DataRow = DataTables("电脑终端管理表").SQLFind("资产卡片号='" & e.DataRow("资产卡片号") & "'")
  If dr Is Nothing  Then    
      e.DataRow("绑定标志")=False
     ' e.Style = "服务器被删除"
  Else 
      e.DataRow("绑定标志")=True 
  End If
 Else If e.DataRow("资产类型")="其它" And e.DataRow.IsNull("资产卡片号")=False And e.DataRow("资产卡片号")<>"N" Then
  Dim dr As DataRow = DataTables("其它终端管理表").SQLFind("资产卡片号='" & e.DataRow("资产卡片号") & "'")
    If dr Is Nothing  Then    
      e.DataRow("绑定标志")=False
     ' e.Style = "服务器被删除"
    Else 
      e.DataRow("绑定标志")=True 
    End If
 Else If e.DataRow("资产类型")="交换机" And e.DataRow.IsNull("资产卡片号")=False And e.DataRow("资产卡片号")<>"N" Then
   Dim dr As DataRow = DataTables("网络交换机管理表").SQLFind("资产卡片号='" & e.DataRow("资产卡片号") & "'") 
    If dr Is Nothing  Then    
      e.DataRow("绑定标志")=False
     ' e.Style = "服务器被删除"
    Else 
      e.DataRow("绑定标志")=True 
    End If
 Else If e.DataRow("资产类型")="服务器"  And e.DataRow.IsNull("资产卡片号")=False And e.DataRow("资产卡片号")<>"N" Then
   Dim dr As DataRow = DataTables("服务器管理表").SQLFind("资产卡片号='" & e.DataRow("资产卡片号") & "'") 
    If dr Is Nothing  Then    
      e.DataRow("绑定标志")=False
     ' e.Style = "服务器被删除"
    Else 
      e.DataRow("绑定标志")=True 
    End If
 End If
End If    '绑定标志


表的drawcell事件中:
If  e.Row("绑定标志") = False  Then    '如果提醒间隔超出设定,且任务没完成,也没关闭,则刷红
    e.Style = "资产未绑定"
End If


表的窗口中增加一按钮,代码为:
Dim Result As DialogResult
Result = MessageBox.Show("重置列将会耗时较长,是否确定重置?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    DataTables("资产管理表").DataCols("绑定标志").RaiseDataColChanged()   '重置列
End If





[此贴子已经被作者于2019/1/17 10:06:08编辑过]

 回到顶部