================================
最近忙一個項目,沒有太多的時間來更新分頁控件。不過還是生了一下,V2.0.0.4。變化不是太大,修改了一個屬性的名稱,增加了兩種分頁算法,還有兩個分頁算法的組合方式。
原來的 SetGetDataKind 屬性名稱改成了 SetRunKind。這個是由于一開始沒有規劃好,導緻了名稱的沖突。含義沒有變化。
增加了兩個分頁算法:Max分頁和颠倒分頁(就是Top的嵌套)。
Max的優點就是簡單高效,可以很容易的利用索引,缺點就是,排序字段隻能有一個,而且排序字段的值不能有重複的。
颠倒Top法,優點是可以設定多個排序字段(當然一個也可以),缺點呢就是寫起來有點複雜(當然這個在分頁控件内部處理了),效率比Max要慢一點,但是比表變量要快一點。和Row_Number的分頁算法的優勢就是可以在SQL Sercer 2000 和 Access、Excel裡面使用。Row_Number隻能在SQL Server2005裡面使用。
這兩個分頁算法各有優缺點,如何能夠取長補短,那該多好呀。這個也不是不可能的呀,于是我又加了兩種分頁算法,這兩個不是單獨存在的,而是把現有的兩種分頁算法“組合”在一起。
Max_TopTop:會根據排序字段的數量來判斷,如果是一個排序字段,那麼就采用max的分頁算法;如果是多個排序字段,那麼就采用颠倒top的方法。
Max_TableVar:和上面的類似。有些人喜歡使用表變量,不喜歡top嵌套,更不喜歡颠來倒去的,那麼沒關系,可以選用這種分頁算法。
其他的就像不說了,有空再詳細說明一下分頁控件的内部結構可采用的設計模式和遵循的原則。
使用方法請檢視以前的文章,謝謝。有空在整理一下。
多種分頁算法的調用方法,在屬性裡面實作。
/**//// 分頁算法的執行個體
public PageManage.PageSQL ManagerPageSQL
{
set
{ MgrPageSQL = value; }
get
PageManage.PageSQL tmp = MgrPageSQL;
if (tmp == null)
switch (SetSQLKind)
case myPageSQLKind.Row_Number:
tmp = new JYK.Controls.PageManage.SQL_Row_Number();
break;
case myPageSQLKind.TableVar:
tmp = new JYK.Controls.PageManage.SQL_TableVar();
case myPageSQLKind.MaxMin:
tmp = new JYK.Controls.PageManage.SQL_Max();
case myPageSQLKind.TopTop :
tmp = new JYK.Controls.PageManage.SQL_TopTop();
case myPageSQLKind.Max_TopTop :
if (this.TableOrderColumns.Contains(","))
//多字段排序
CommandClass.MsgBox("Max_TopTop2", false);
tmp = new JYK.Controls.PageManage.SQL_TopTop();
}
else
//一個排序字段
CommandClass.MsgBox("Max_TopTop1", false);
tmp = new JYK.Controls.PageManage.SQL_Max();
case myPageSQLKind.Max_TableVar :
tmp = new JYK.Controls.PageManage.SQL_TableVar();
}
MgrPageSQL = tmp;
}
if (tmp.myPage == null)
tmp.myPage = this;
return tmp;
}
}