TabItem之间的查询与新增/修改弹出框的隐藏和字段禁用

该博客介绍了如何在WPF-MVVM架构下实现TabControl控件的数据加载和状态分类。通过LINQ查询,将数据按待认领、已认领和全部记录分类展示在不同的TabItem中,并实现了根据搜索条件进行模糊查询。此外,还展示了如何通过事件处理弹出窗口的显示、隐藏和禁用功能,用于失物新增和认领操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.一个简单的WPF-MVVM的TabControl控件,以下是根据状态分类出来的TabItem,
如图:
在这里插入图片描述

因为是MVVM的加载事件,所以需要在这个用户控件里面给它一个Loaded加载事件,
是为了让它一打开的时候就加载出来,
在这里插入图片描述

图上的“待认领”“已认领”和“全部记录”的表格
ItemsSource="{Binding LostTable}"属性的命名都是不一样的,
又因为我的表格涉及到多张表的数据,所以我给了一个Vo类,现在先把三个表格的属性和加载的命令事件写出来先
在这里插入图片描述
在这里插入图片描述

接下来就是linq查询方法,根据状态把它们分别放到对应的表格

 //声明一个临时表格
DataTable dataTable;
 //加载
public void Loaded()
{
   //查询全部记录
   var linq = (from tb in myModels.D_OtherHousing
              join tbroom in myModels.D_Room on tb.roomID equals tbroom.roomID
              join tbguest in myModels.S_GuestInformation on tb.GuestInformationID equals tbguest.GuestInformationID
              join tbstaff in myModels.S_Staff on tb.staffID equals tbstaff.staffID
              select new LostFoundVo
              {
              	State = tb.State,//状态
                  ClaimTime = tb.ClaimTime,//认领时间
                  Claim = tb.Claim.Trim(),//认领人
                  PickUp = tb.PickUp,//拾到时间
                  OtherHousing = tb.OtherHousing,//内容
                  Lostname = tb.Lostname.Trim(),//拾到人姓名
                  OtherHousingID = tb.OtherHousingID,//失物表ID
                  Remark = tb.Remark,//备注
                  GuestInformationID = tb.GuestInformationID,//客人ID
                  name = tbguest.name,//客人姓名
                  roomID = tb.roomID,//房间ID
                  roomnumber = tbroom.roomnumber.Trim(),
                  staffID = tb.staffID,//员工ID
                  ANun = tbstaff.ANun, //员工工号
             });
            //==模糊查询(房间号,姓名,状态)
            if (!string.IsNullOrEmpty(txtroomnuber))
            {
                linq = linq.Where(m => m.roomnumber.Contains(txtroomnuber));
            }
            if (!string.IsNullOrEmpty(txtname))
            {
                linq = linq.Where(m => m.name.Contains(txtname));
            }
            if (!string.IsNullOrEmpty(txtState))
            {
                linq = linq.Where(m => m.State.Contains(txtState));
            }
            WholeLostTable = linq.ToList();//全部记录
dataTable = ListToDataTable.ListToDataTablen(WholeLostTable);//临时表格数据
            #region 查询待认领记录
            var a = linq.Where(m => m.State == "待认领");
            //==模糊查询(房间号,内容,拾到时间)
            if (!string.IsNullOrEmpty(txtroomnuber))
            {
                a = a.Where(m => m.roomnumber.Contains(txtroomnuber));
            }
            if (!string.IsNullOrEmpty(txtOtherHousing))
            {
                a = a.Where(m => m.OtherHousing.Contains(txtOtherHousing));
            }
            if (!string.IsNullOrEmpty(dtPickUp))
            {
                DateTime dt = Convert.ToDateTime(dtPickUp);
                a = a.Where(m => m.PickUp >= dt);
            }
            LostTable = a.ToList();//待认领
            #endregion
            #region 查询已认领
            var b = linq.Where(m => m.State == "已认领");
            //==模糊查询(房间号,内容,认领时间)
            if (!string.IsNullOrEmpty(txtroomnuber))
            {
                b = b.Where(o => o.roomnumber.Contains(txtroomnuber));
            }
            if (!string.IsNullOrEmpty(txtOtherHousing))
            {
                b = b.Where(o => o.OtherHousing.Contains(txtOtherHousing));
            }
            if (!string.IsNullOrEmpty(dtClaimTime))
            {
                DateTime dt = Convert.ToDateTime(dtClaimTime);
                b = b.Where(o => o.ClaimTime >= dt);
            }
            AlreadyLostTable = b.ToList();//已认领
            #endregion
}

2.弹出窗口的隐藏和禁用
在这里插入图片描述

//新增(弹出窗口)
public void Add()
{
 	Pending_WD pending = new Pending_WD();
    pending.AlreadyLost.Visibility = System.Windows.Visibility.Hidden; //隐藏认领框信息
    var Window = pending.DataContext as PendingViewModel;
    Window.text = "失物新增";
    Window.IsAdd = true;//新增标志
    pending.Show();
}
 //认领(弹出框)
public void Already()
{
//获取选中数据
    LostFoundVo vo = SelectLostEntity;
    if (vo == null)
    {
        MessageBox.Show("请选择要认领的物品", "系统提示");
        return;
     }
     else
     {
      	//获取ID
        int ID = vo.OtherHousingID;
        Pending_WD pending = new Pending_WD();
        pending.LostTextBlock.IsEnabled = false;//禁用拾到信息
        var Window = pending.DataContext as PendingViewModel;
        Window.text = "失物认领";
        Window.IsAdd = false;//修改
        //回填数据
 var HT = WholeLostTable.Where(m => m.OtherHousingID == ID).ToList();//根据ID查询出数据
Window.roomnumber = HT[0].roomnumber.ToString().Trim();//房间号
         Window.Lostname = HT[0].Lostname.ToString().Trim();//拾到人姓名
         Window.ANun = HT[0].ANun.ToString().Trim();//登记人工号
         Window.PickUp = HT[0].PickUp.ToString().Trim();//登记时间
         Window.OtherHousing = HT[0].OtherHousing.ToString().Trim();//内容
        pending.Show();//打开窗口
     }
  }

禁用和隐藏的原理其实很简单,就在控制里给一个name,直接获取name然后给属性值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值