WPF 对显示列顺序的缓存处理

需求:显示的数据列表1、可以正常的拖拽显示每列的位置,2、对不同用户记录最后拖拽后的位置进行保存,下次登录时展示出来;

方案1、unload 时记录列的位置,存储到本地数据库中,再次登录时做相应的处理;

 

方案2、做独立存储,缓存最后的数据列顺序;再次登录时反射对应的文件,做列展示  

独立存储是针对用户进行的,其将所需存储的数据存储于当前用户Documents目录下一个隐藏的文件夹中。独立存储主要进行两种操作,很明显一个是读取,另一个是写入,且两个操作分别应该在程序初始化与程序退出时进行。独立存储的操作由位于System.IO.IsolatedStorage命名空间的IsolatedStorageFile与IsolatedStorageFileStream来支持。

下面是相应代码:

/// <summary>
/// 缓存当前列顺序,做独立存储 IsolatedStorageFileStream 创建文件规则“用户名+当前界面枚举值”
/// </summary>
/// <param name="dataGrid">当前页面的列表控件 限DataGrid</param>
/// <param name="pagename">当前界面名称</param>
public static void CacheDisplayOrder(DataGrid dataGrid,string pagename)
{
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
using (IsolatedStorageFileStream isoStream = new
IsolatedStorageFileStream((UserHelper.CurrentUser.AccountName + pagename), FileMode.Create, isoFile))
{
int[] displayIndices = new int[dataGrid.Columns.Count];
for (int i = 0; i < dataGrid.Columns.Count; i++)
{
displayIndices[i] = dataGrid.Columns[i].DisplayIndex;
}
XmlSerializer ser = new XmlSerializer(typeof(int[]));
ser.Serialize(isoStream, displayIndices);
}
}

 

 

/// <summary>
/// 设置默认列顺序
/// </summary>
/// <param name="dataGrid">当前页面的列表控件 限DataGrid</param>
/// <param name="pagename">当前界面名称</param>
public static void SetDisplayOrder(DataGrid dataGrid, string pagename)
{
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
string[] fileNames = isoFile.GetFileNames("*");
bool found = false;
if (fileNames.Contains(UserHelper.CurrentUser.AccountName + pagename))
found = true;
if (!found) return;
using (IsolatedStorageFileStream isoStream = new
IsolatedStorageFileStream((UserHelper.CurrentUser.AccountName + pagename), FileMode.Open,
isoFile))
{
try
{
XmlSerializer ser = new XmlSerializer(typeof(int[]));
int[] displayIndicies =
(int[])ser.Deserialize(isoStream);
for (int i = 0; i < displayIndicies.Length; i++)
{
dataGrid.Columns[i].DisplayIndex = displayIndicies[i];
}
}
catch { }
}
}

转载于:https://www.cnblogs.com/D-LuFei/p/7275646.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值