以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- openQQ的聊天窗口的用户分组,组如何排序? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80385) |
-- 作者:kolen -- 发布时间:2016/1/21 16:49:00 -- openQQ的聊天窗口的用户分组,组如何排序? openQQ的聊天窗口的用户分组,组如何排序? 测试了一下,按照A-Z也是不对的,如图,应该怎么设置,请老师指导一下,谢谢! [此贴子已经被作者于2016/1/21 17:15:56编辑过]
|
-- 作者:kolen -- 发布时间:2016/1/21 17:04:00 -- 用户数据保存在外部表中,增加了列department 客户端代码: If QQClient.Ready Then \'判断QQ是否已经打开 Return End If QQClient.ServerIP = "192.168.0.39" \'指定服务器IP地址 QQClient.ServerPort = 52177 \'指定服务器端口 Dim cmd As New SQLCommand Dim dt As DataTable cmd.C \'设置了外部数据源,这样能够使用下面的外部数据表 cmd.CommandText = "SELECT * Fr om {xinruiusers} where Name = \'" & User.Name & "\' " \'获得外部数据表xinruiusers的当前用户名的行 dt = cmd.ExecuteReader() If dt.DataRows.Count > 0 Then QQClient.UserName = dt.DataRows(0)("department") & "." & user.Name End If If QQClient.Start() = True \'如果登录成功 Dim msg As String = "恭喜,OpenQQ登录成功!" If QQClient.ServerMessage > "" Then \'如果服务器返回了欢迎信息 msg = msg & QQClient.ServerMessage End If popMessage(msg,"提示",PopiconEnum.Infomation,5) Else \'如果登录失败,显示服务器返回错误信息 PopMessage("QQClient登录失败,原因:" & vbcrlf & QQClient.ServerMessage,"提示",PopiconEnum.Error,5) End If [此贴子已经被作者于2016/1/21 17:14:26编辑过]
|
-- 作者:kolen -- 发布时间:2016/1/21 17:08:00 -- 服务端的网络监视器中Userlogging事件代码: Dim pts() As String = e.UserName.Split(".") Dim dr1 As DataRow dr1 = DataTables("xinruiusers").Find("department = \'" & pts(0) & "\' And Name = \'" & pts(1) & "\'") If dr1 Is Nothing Then \'判断此用户不存在 e.Message = "用户名错误!" \'返回给登录者的提示信息 Return End If e.Success = True \'允许用户登录 DataTables("xinruiusers").Load \'添加所有同事为好友 For Each dr2 As DataRow In DataTables("xinruiusers").DataRows Dim nm As String = dr2("department") & "." & dr2("Name") If nm <> e.UserName AndAlso nm <> ".Groups" AndAlso nm <> ".Roles" Then \'如果不是登录者本人 \'因为用户登录外部表中,默认有2行.Groups和.Roles,所以这里把这两行排除一下。 e.Buddies.Add(nm) End If Next [此贴子已经被作者于2016/1/21 17:11:11编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/1/21 17:14:00 -- 测试了一下,是根据_Identify排序的。所以你要控制排序,你就必须按照顺序数据行。
比如有四个分组,第一行、第二行、第三行、第四行,就排序好分组。 |
-- 作者:kolen -- 发布时间:2016/1/21 17:22:00 -- 红袍老师:你的意思是e.Buddies.Add(nm),排序根据nm数据加入e.Buddies的先后顺序吗?我怎么调整好呢?不是很明白, 这里的_identify是哪个表的主键列呢?
[此贴子已经被作者于2016/1/21 17:23:13编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/1/21 17:31:00 -- 哦,说错了,可以指定排序的,根据添加的用户的先后排序的
For Each dr2 As DataRow In DataTables("用户").Select("", "部门") |
-- 作者:kolen -- 发布时间:2016/1/21 17:37:00 -- 对的,e.Buddies里面数据是哪个部门先加入,哪个部门先排,所以加入前,先把“用户”表,按照“部门”排序好就好了。 老师你太厉害了! 我测试一下,再汇报情况 。
|