录播教室预约系统(十一)-客户端获取本单位的所有教室

 

客户端用户登陆后,在主界面中可以看到本单位的所有教室,我们来看一下是如何获取的:

客户端代码:

复制代码
   //根据用户获取功能教室列表
        private void GetRooms(Users user)
        { 
            //把当前用户信息发送个服务器端,并获取到本用户相关的教室列表 
            RoomList roomList = newTcpConnection.SendReceiveObject<RoomList>("GetRooms", "RoomList", 5000, user);

            IList<ClassRoom>  classRomms= roomList.ClassRooms;

            listBox1.DataSource = classRomms;

            listBox1.DisplayMember = "RoomName";
            listBox1.ValueMember = "ID";
                     
        }
复制代码

RoomList类 (可由protobuf.net 序列化)

复制代码
 //根据单位名称获取功能室列表
    [ProtoContract]
    public class RoomList
    {
        [ProtoMember(1)]

        public IList<ClassRoom> ClassRooms;

        public RoomList() { }

        public RoomList(IList<ClassRoom> rooms)
        {
            this.ClassRooms = rooms;
        }
  
    }
复制代码

服务器端的处理方法:

在构造函数中声明:

  //根据用户的单位,获取所有功能教室 列表
            NetworkComms.AppendGlobalIncomingPacketHandler<Users>("GetRooms", HandleGetRooms);

处理方法:

复制代码
  private void HandleGetRooms(PacketHeader header, Connection connection, Users theUser)
        {
            IList<ClassRoom> theRooms = DoClassRoom.GetClassRoomByUserDep(theUser.Department);

            RoomList roomList = new RoomList(theRooms);

            //把获取到的数据发回去
            connection.SendObject("RoomList", roomList);
        }
复制代码

DoClassRoom.GetClassRoomByUserDep方法

复制代码
 //根据用户单位获取单位的功能教室列表
        public static IList<ClassRoom> GetClassRoomByUserDep(string depName)
        {
            IDataReader reader = DBClassRoom.GetClassRoomByDepName(depName);

            return LoadListFromReader(reader);
        }
复制代码
  private static IList<ClassRoom> LoadListFromReader(IDataReader reader)
        {
            IList<ClassRoom> classRoomList = new List<ClassRoom>();
            try
            {
                while (reader.Read())
                {
                    ClassRoom classRoom = new ClassRoom();
                    classRoom.Id = Convert.ToInt32(reader["Id"]);
                    classRoom.RoomName = reader["RoomName"].ToString();
                    classRoom.DepID = Convert.ToInt32(reader["DepID"]);
                    classRoom.Department = reader["Department"].ToString();
                    classRoomList.Add(classRoom);

                }
            }
            finally
            {
                reader.Close();
            }

            return classRoomList;

        }
LoadListFromReader方法

DBClassRoom.GetClassRoomByDepName方法

复制代码
 //根据单位名称获取功能教师列表

        public static IDataReader GetClassRoomByDepName(string  department)
        { 

            SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "ClassRoom_SelectClassRoomByDepName", 1);
         
            sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 200, ParameterDirection.Input, department);

            return  sph.ExecuteReader();
         

        }
复制代码

相关存储过程:

复制代码
CREATE PROCEDURE [dbo].ClassRoom_SelectClassRoomByDepName

@Department nvarchar(200)

AS


SELECT
        [Id],
        [RoomName],
        [DepID],
        [Department]
        
FROM
        [dbo].[ClassRoom] where Department=@Department
复制代码

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值