| 据检索操作。不言而喻,如果这些属性中的任何一个为空,该过程将终止。同样,如果合作者控件不存在,数据绑定过程将被取消。要查找合作者控件,DataBind 方法使用 Page 类中的 FindControl 函数。由此可见,合作者控件必须为主窗体的直接子控件。
进行分页显示的控件不能为任意的 ASP.NET 服务器控件。它必须为列表控件或基本数据列表控件。更一般来说,合作者控件必须具有 DataSource 属性并实现 DataBind 方法。可能进行分页的控件实际上只需要满足这些要求。Microsoft® .NET Framework 中所有继承 ListControl 或 BaseDataList 的控件都满足第一个要求;而所有 Web 控件通过设计都满足 DataBind 要求。使用当前的实现方法,无法使用 SqlPager 控件来对 Repeater 进行分页。Repeater 与合作者控件 DataList 和 DataGrid 不同,不继承 BaseDataList,也不提供列表控件的功能。下表列出了可以使用 SqlPager 进行分页的控件。
表 2:可以由 SqlPager 控件进行分页的数据绑定控件
控件
说明
CheckBoxList
从 ListControl 派生而来,显示为复选框列表。
DropDownList
从 ListControl 派生而来,显示为字符串下拉列表。
ListBox
从 ListControl 派生而来,显示为字符串可滚动列表。
RadioButtonList
从 ListControl 派生而来,显示为单选按钮列表。
DataList
从 BaseDataList 派生而来,显示为模板化数据项目列表。
DataGrid
从 BaseDataList 派生而来,显示为数据项目的表格网格。DataGrid 是唯一一个内置有功能强大的分页引擎的 ASP.NET 控件。
以下代码说明由 SqlPager 控件实现的数据绑定过程。 public override void DataBind()
{
// 启动数据绑定事件
base.DataBinding();
// 数据绑定后必须重新创建控件
ChildControlsCreated = false;
// 确保控件存在且为列表控件
_controlToPaginate = Page.FindControl(ControlToPaginate);
if (_controlToPaginate == null)
return;
if (!(_controlToPaginate is BaseDataList ||
_controlToPaginate is ListControl))
return;
// 确保具有足够的连接信息并指定查询
if (ConnectionString == "" || SelectCommand == "")
return;
// 获取数据
if (PagingMode == PagingMode.Cached)
FetchAllData();
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |