【问题标题】:What approach is good for US State ListBox/DropDownList什么方法对美国州 ListBox/DropDownList 好
【发布时间】:2011-12-28 22:02:35
【问题描述】:

在 WPF 中(在 ListBox 或 DropDownList 中)绑定 US State 的最佳方法是什么?我应该使用 DataTable 来绑定这些数据吗?将 DataTable 绑定到 WPF 对象是正确的编程方法吗?或者我应该使用类/对象。我的意思是从数据库中获取数据并将其转换为通用对象列表,然后将此列表绑定到 WPF 对象?

谢谢,

【问题讨论】:

    标签: object binding listbox datatable states


    【解决方案1】:
     public class States
        {
            private string name;  
            public string Name    
            {
                get
                {
                    return name;
                }
            }
    
            private string id;  
            public string Id  
            {
                get
                {
                    return id;
                }
            }
        }
    
            List<States> states = new List<States>();
    
            //get from database
    
    
            foreach( states DataSource)
            {
                name = "Alabama";
                id = "1";
            }
    
            // next Cache list of states for better performance
    

    很多方法... 一种方法是使用列表类。从数据源获取,下一个缓存以获得更好的性能。

    【讨论】:

    • 谢谢布兰登。下面是我的代码。我使用 while(rdr.read()) 从阅读器读取数据并添加到 List 对象。但它确实降低了性能。我怎么注意到性能下降了?我曾经将我的状态列表框与 DataTable 绑定,现在尝试使用 List 对象。我可以从字面上看到它需要将近两秒钟,而使用 DataTable 它只是眨眼。有什么建议吗??
    • ADO.Net 在从数据库读取时有很多内置开销。使用绑定到 DataSet 的 DataAdapter,然后再绑定到 DataTable 的步骤太多,性能下降。仅使用 SQLCommand 更轻、更快,并且需要更少的连接。第一种方法对初学者来说更容易使用。好的编码标准是尽可能少地使用代码,并且只连接并从数据库中返回您需要的数据。但是对于将使用且不会更改的数据库中的数据。我建议缓存它。
    • 感谢您的精彩解释。但我仍然很困惑。我了解我绝对不想使用的 DataAdpater 和 DataSet。正如您所解释的,我将使用 SQL 命令,但不明白您所说的缓存是什么意思。你能参考任何网站吗?缓存是否意味着使用任何集合?请指教。
    • 缓存用于将数据存储到内存中。例如,假设您想在 2 个单独的网页上显示 50 个状态的列表。您可以对数据库进行 1 次调用并将结果存储到缓存中。因此,下次加载页面时,您将从缓存而不是数据库中获取结果。这将大大提高性能。无需一遍又一遍地访问数据库。从服务器内存中提取数据要快得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多