1.把DataSet看成是XML.因为它的内部就是XML;所以他们之间在很多情况下完全可以互换;
比如设置一个DataGrid的数据源:
DataSet ds = new DataSet();
.. .. ..
DataGrid.DataSource 
= ds;
.. .. ..
ds.ReadXML(
"XML.xml");
DataGrid.DataSource 
= ds;

2.一定要养成定义属性的习惯,内部变量必需封装.
特别是需要定义使用的常用类.

3.对一般的少量数据可以存储在数组内.
对于需要经常查询,或者根据某个键查找的数据组,用 值/键 对,比如Hashtable.
这些类都要实现一个接口: ICollection. 所以,可以定义此接口返回类型的值.比如:
        public ICollection BookOrders
        
{
            
get
            
{
                
return bookOrders.Values;
            }

        }
这就是一个返回内部Hashtable : bookOrders.Values的值组的属性, 实现了ICollection接口.

4.用foreach访问ICollection中每一个元素时,使用以下方法:
foreach (DictionaryEntry entry in bookOrders)
{
    .
}

5.属性也可以实现复杂计算,不要总错误的认为处理只有在方法中进行.
比如在get里面进行大量处理再输出.

6.Cache的使用非常简单,而且能实现很多复杂的功能,比如到时间自动处理任务,比如更新等等.
比如,我们可以对图书的资料DataSet缓存到Cache中,且3分钟更新一次.
Context.Cache.Insert("Books", ds, null, DateTime.Now.AddMinutes(3), Cache.NoSlidingExpiration, CacheItemPriority.Default, new CacheItemRemovedCallback(RefreshDataSet));

static void RefreshDataSet(string key, object item, CacheItemRemovedReason reason)
{
    .. .. ..
}

7.我们可以动态加载控件,和自定义控件.
但是,我们必需注意一个很重要的问题: 由于控件是动态代码产生,而并不是属于窗体本身初始化的一部分,所以当页面PostBack时(比如点任何一个按钮)会重载页面,也一定要写好相应的处理代码.
UserControl GoodBookCtrl = (UserControl)LoadControl("GoodBook.ascx");
this.Panel1.Controls.Add(GoodBookCtrl);

8.DataGrid中的按钮事件,是DataGrid.ItemCommand事件处理的,我们常常在事件内判断e.CommandName来进行相应的处理,同时可以调用同一行(条记录)的相关数据进行处理,比如的一行的数据就是e.Item.Cells[0].Text .

9.DataGrid.DataSource实现的对象,它包含用于为此控件提供数据的值集合。
数据源必须是实现 System.Collections.IEnumerable 接口(如 System.Data.DataViewSystem.Collections.ArrayListSystem.Collections.Hashtable)的对象,才能绑定到从 BaseDataList 类派生的控件。
同样,这里也是,例子中购物车DataGrid绑定了ICollection返回的对象,它是一个以类为元素的集合,我们在DataGrid里设置相应的列绑定到类里面的属性名,它会自动识别,非常智能.因为属性是类的一个下级(也就是所谓的"."关系,都适用).





这个例子很简单,和实际的系统也相去甚远,因为它用的的是动态控件,缓存和会话状态技术,而真正的这些都还是主要用数据库,中间可能插一些缓存层.
这里只是技术的应用例子,速度奇快,占用内存也奇高.
下载: https://files.cnblogs.com/wddavid/ElectronicBookShop.rar
SQL数据库: https://files.cnblogs.com/wddavid/ElectronicBookShopDatabase.rar
posted on 2005-08-14 21:16  wddavid  阅读(691)  评论(0)    收藏  举报