zoukankan      html  css  js  c++  java
  • 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 { }
    }
    }

  • 相关阅读:
    Core Foundation 框架
    iOS下微信语音播放之切换听筒和扬声器的方法解决方案
    http://blog.sina.com.cn/s/blog_6f40a0e70100p98l.html
    web移动开发最佳实践之js篇
    iOS框架介绍(五)Core Services 层
    针式PKM V9.36 最新版(2012_03_29)
    通过10000个小时的个人知识管理,将自己的智慧潜力挖掘出来
    下载 针式PKM V9.08 版
    如何避免重复造轮子问题?
    和evernote比 针式PKM有什么特色?
  • 原文地址:https://www.cnblogs.com/D-LuFei/p/7275646.html
Copyright © 2011-2022 走看看