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);
}
}