winform 间接实现cookies功能(把当前操作的部分信息记录到本地的xml文件中,类似web中cookies)

1.创建PageLastSnapUtil类

  public class PageLastSnapUtil
    {
        private const string snapFileName = "Cookies.xml";
        private static string snapFilePath = FileHelper.Instance.SetFilePath(snapFileName);
        /// <summary>
        /// 得到这个菜单关闭前最后保存的数据
        /// </summary>
        /// <param name="authoryRRN"></param>
        /// <returns></returns>
        public static LastSnapModel GetLastSnap(string authoryRRN)
        {
            if (FileHelper.Instance.IsExistedFilePath(snapFilePath))
            {
                PageSnap pageSnap = XMLHelper.Instance.DeSerializableXML<PageSnap>(snapFilePath);
                LastSnapModel lastSnap = pageSnap.PageSnapList.FirstOrDefault(p => p.AuthoryRRN == authoryRRN);
                if (lastSnap != null)
                {
                    return lastSnap;
                }
                else
                {
                    return null;
                }
            }
            else
            {
                return null;
            }
        }
        /// <summary>
        /// 关闭前保存数据
        /// </summary>
        /// <param name="lastSnap"></param>
        public static void SaveLastSnap(LastSnapModel saveSnap)
        {
            if (FileHelper.Instance.IsExistedFilePath(snapFilePath))
            {
                PageSnap pageSnap = XMLHelper.Instance.DeSerializableXML<PageSnap>(snapFilePath);
                LastSnapModel lastSnap = pageSnap.PageSnapList.FirstOrDefault(p => p.AuthoryRRN == saveSnap.AuthoryRRN);
                if (lastSnap != null)
                {
                    pageSnap.PageSnapList.Remove(lastSnap);
                }
                pageSnap.PageSnapList.Add(saveSnap);
                XMLHelper.Instance.SerializableXML<PageSnap>(pageSnap, snapFilePath);
            }
            else
            {
                PageSnap pageSnap = new PageSnap();
                pageSnap.PageSnapList = new List<LastSnapModel>() { saveSnap };
                XMLHelper.Instance.SerializableXML<PageSnap>(pageSnap, snapFilePath);
            }
        }
    }

    [XmlRoot("PageSnap")]
    public class PageSnap
    {
        [XmlArray("PageSnapList"), XmlArrayItem("LastSnapModel")]
        public List<LastSnapModel> PageSnapList { get; set; }
    }

    public class LastSnapModel
    {
        /// <summary>
        /// 菜单的主键
        /// </summary>
        public string AuthoryRRN { get; set; }
        
        public string Text { get; set; }
        public string Name { get; set; }

        [XmlArray("Snaps"), XmlArrayItem("SnapKeyValue")]
        public List<SnapKeyValue> Snaps { get; set; } 
    }

    public class SnapKeyValue
    {
        public string Key { get; set; }
        public string Value { get; set; }
    }

2.页面调用

 private void SaveLastSnap()
        {
            List<SnapKeyValue> snaps = new List<SnapKeyValue>();
            //页面操作数据
            snaps.Add(new SnapKeyValue() { Key = "djdNo", Value = txtVoucherId.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "operateType", Value = cbOperateType.GetSelectedValue() });
            snaps.Add(new SnapKeyValue() { Key = "dept", Value = txtDept.GetSelectedValue() });
            snaps.Add(new SnapKeyValue() { Key = "chFlag", Value = txtCHFlag.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "barcode", Value = txtBarcode.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "fromVoucherId", Value = txtFromVoucherId.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "minvcode", Value = txtInventory.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "invStandard", Value = txtInvStandard.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "invcode", Value = txtInvcode.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "invname", Value = txtInvName.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "processId", Value = txtProcessId.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "processName", Value = txtProcessName.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "aprocessId", Value = txtAProcessId.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "aprocessName", Value = txtAProcessName.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "tqty", Value = txtTQty.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "sqty", Value = txtSQty.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "wqty", Value = txtWQty.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "remark", Value = txtRemark.Text.Trim() });
            snaps.Add(new SnapKeyValue() { Key = "workplaceid", Value = txtWorkPlaceId.Text.Trim() });

            LastSnapModel pageSnap = new LastSnapModel();
            pageSnap.Snaps = snaps;
            pageSnap.Name = this.Name;
            pageSnap.Text = this.Text;
            pageSnap.AuthoryRRN = this.Name;
            PageLastSnapUtil.SaveLastSnap(pageSnap);
        }

3.生成的xml格式如下:

<?xml version="1.0"?>
<PageSnap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PageSnapList>
    <LastSnapModel>
      <AuthoryRRN>CookiesName</AuthoryRRN>
      <Text>主界面</Text>
      <Name>CookiesName</Name>
      <Snaps>
        <SnapKeyValue>
          <Key>djdNo</Key>
          <Value>B202312180006</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>operateType</Key>
          <Value />
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>dept</Key>
          <Value />
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>chFlag</Key>
          <Value>制作之中</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>barcode</Key>
          <Value>OF-FP05L</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>fromVoucherId</Key>
          <Value />
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>minvcode</Key>
          <Value>OF-FP05L</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>invStandard</Key>
          <Value />
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>invcode</Key>
          <Value>99</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>invname</Key>
          <Value>成品</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>processId</Key>
          <Value>016</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>processName</Key>
          <Value>3F-MTF测试</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>aprocessId</Key>
          <Value>023</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>aprocessName</Key>
          <Value>3F-待报废站</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>tqty</Key>
          <Value>23</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>sqty</Key>
          <Value>23</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>wqty</Key>
          <Value>0</Value>
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>remark</Key>
          <Value />
        </SnapKeyValue>
        <SnapKeyValue>
          <Key>workplaceid</Key>
          <Value />
        </SnapKeyValue>
      </Snaps>
    </LastSnapModel>
  </PageSnapList>
</PageSnap>

4.页面加载xml(把xml内容加载到窗体中)

private void GetLastSnap()
        {
            try
            {
                //获取上次保存的数据
                LastSnapModel lastSnap = PageLastSnapUtil.GetLastSnap(this.Name);
                if (lastSnap != null)
                {                 
                    SnapKeyValue barcode = lastSnap.Snaps.FirstOrDefault(s => s.Key == "barcode");
                    if (barcode != null && !string.IsNullOrEmpty(barcode.Value))
                    {
                        txtBarcode.Text = barcode.Value;
                    }
                    SnapKeyValue fromVoucherId = lastSnap.Snaps.FirstOrDefault(s => s.Key == "fromVoucherId");
                    if (fromVoucherId != null && !string.IsNullOrEmpty(fromVoucherId.Value))
                    {
                        txtFromVoucherId.Text = fromVoucherId.Value;
                    }
                    SnapKeyValue minvcode = lastSnap.Snaps.FirstOrDefault(s => s.Key == "minvcode");
                    if (minvcode != null && !string.IsNullOrEmpty(minvcode.Value))
                    {
                        txtInventory.Text = minvcode.Value;
                    }
                    SnapKeyValue invcode = lastSnap.Snaps.FirstOrDefault(s => s.Key == "invcode");
                    if (invcode != null && !string.IsNullOrEmpty(invcode.Value))
                    {
                        txtInvcode.Text = invcode.Value;
                    }
                    SnapKeyValue invname = lastSnap.Snaps.FirstOrDefault(s => s.Key == "invname");
                    if (invname != null && !string.IsNullOrEmpty(invname.Value))
                    {
                        txtInvName.Text = invname.Value;
                    }
                    SnapKeyValue invStandard = lastSnap.Snaps.FirstOrDefault(s => s.Key == "invStandard");
                    if (invStandard != null && !string.IsNullOrEmpty(invStandard.Value))
                    {
                        txtInvStandard.Text = invStandard.Value;
                    }
                    SnapKeyValue processId = lastSnap.Snaps.FirstOrDefault(s => s.Key == "processId");
                    if (processId != null && !string.IsNullOrEmpty(processId.Value))
                    {
                        txtProcessId.Text = processId.Value;
                    }
                    SnapKeyValue processName = lastSnap.Snaps.FirstOrDefault(s => s.Key == "processName");
                    if (processName != null && !string.IsNullOrEmpty(processName.Value))
                    {
                        txtProcessName.Text = processName.Value;
                    }                 
                    SnapKeyValue aprocessId = lastSnap.Snaps.FirstOrDefault(s => s.Key == "aprocessId");
                    if (aprocessId != null && !string.IsNullOrEmpty(aprocessId.Value))
                    {
                        txtAProcessId.Text = aprocessId.Value;
                    }
                    SnapKeyValue aprocessName = lastSnap.Snaps.FirstOrDefault(s => s.Key == "aprocessName");
                    if (aprocessName != null && !string.IsNullOrEmpty(aprocessName.Value))
                    {
                        txtAProcessName.Text = aprocessName.Value;
                    }
              
                    SnapKeyValue tqty = lastSnap.Snaps.FirstOrDefault(s => s.Key == "tqty");
                    if (tqty != null && !string.IsNullOrEmpty(tqty.Value))
                    {
                        txtTQty.Text = tqty.Value;
                    }
                    SnapKeyValue workPlaceId = lastSnap.Snaps.FirstOrDefault(s => s.Key == "workPlaceId");
                    if (workPlaceId != null && !string.IsNullOrEmpty(workPlaceId.Value))
                    {
                        txtWorkPlaceId.Text = workPlaceId.Value;
                    }
                    SnapKeyValue remark = lastSnap.Snaps.FirstOrDefault(s => s.Key == "remark");
                    if (remark != null && !string.IsNullOrEmpty(remark.Value))
                    {
                        txtRemark.Text = remark.Value;
                    }
                }
            }
            catch (Exception ex)
            {
                UILogger.This.Trace(ex.Message);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值