相关存储过程:
-- =============================================
-- Author:<Author,,Name>
-- Create date: <Create Date,,>
-- Description:<Description,,>
-- =============================================
CREATE procedure [dbo].[sp_PageChange]
@PageIndex INT,
@PageSize INT,
@RecordCount INT OUT,
@PageCount INT OUT,
@strGetFields nvarchar(1000),
@tableName nvarchar(500) ,
@ID nvarchar(100),
@strWhere nvarchar(1000) ='',
@sortName nvarchar(50) =' asc ' ,
@orderName nvarchar(100)
AS
declare @countSelect nvarchar(2000)
--设置统计查询语句
if len(@strWhere) =0
--如果没有查询条件
begin
set @countSelect=N'SELECT @CountRecord = COUNT(*) FROM '+@tableName
end
else
--否则
begin
set @countSelect=N'SELECT @CountRecord = COUNT(*) FROM '+@tableName+' where '+@strWhere
end
--执行并返回总数
exec sp_executesql @countSelect,N'@CountRecord int output',@RecordCount output
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
SET NOCOUNT ON
DECLARE @SQLSTR NVARCHAR(3000)
--实际总共的页码小于当前页码 或者 最大页码
if @PageCount>=0
--如果分页后页数大于0
begin
if @PageCount<=@PageIndex and @PageCount>0 --如果实际总共的页数小于datagrid索引的页数
--or @PageCount=1
begin
--设置为最后一页
set @PageIndex=@PageCount-1
end
else if @PageCount<=@PageIndex and @PageCount=0
begin
set @PageIndex=0;
end
end
--如果用普通的sql而不使用存储过程调用
declare @ID_temp varchar(100)
set @ID_temp='cast('+@ID+' as nvarchar(100)) '
declare @returnValue nvarchar(100)
set @returnValue=','''+cast(@RecordCount as nvarchar(100)) +'|'+cast(@PageCount as nvarchar(100))+'|'+'''+'+@ID_temp+' as [returnValue] '
--如果用普通的sql而不使用存储过程调用
IF @PageIndex = 0 OR @PageCount <= 1 --如果为第一页
begin
if len(@strWhere) =0
begin
SET @SQLSTR =N'SELECT TOP '+STR( @PageSize )+@strGetFields+@returnValue+' FROM '+@tableName+' ORDER BY '+@orderName+@sortName
end
else
begin
SET @SQLSTR =N'SELECT TOP '+STR( @PageSize )+@strGetFields+@returnValue+' FROM '+@tableName+' where '+@strWhere+' ORDER BY '+@orderName+@sortName
end
end
ELSE IF @PageIndex = @PageCount - 1 --如果为最后一页
begin
if len(@strWhere) =0
begin
SET @SQLSTR =N' SELECT '+@strGetFields+@returnValue+' FROM '+@tableName+' where '+@ID+' not in ( SELECT TOP '+STR(/*@RecordCount - */@PageSize * @PageIndex )+@ID+' FROM '+@tableName+' ORDER BY '+@orderName+@sortName+' ) ORDER BY '+@orderName+@sortName
end
else
begin
SET @SQLSTR =N' SELECT '+@strGetFields+@returnValue+' FROM '+@tableName+' where '+@ID+' not in ( SELECT TOP '+STR(/*@RecordCount - */ @PageSize * @PageIndex )+@ID+' FROM '+@tableName+' where '+@strWhere+' ORDER BY '+@orderName+@sortName+' ) and '+@strWhere+' ORDER BY '+@orderName+@sortName
end
end
ELSE --否则执行
begin
if len(@strWhere) =0
begin
SET @SQLSTR =N' SELECT TOP '+STR( @PageSize )+@strGetFields+@returnValue+' FROM '+@tableName+' where '+@ID+' not in ( SELECT TOP '+STR( /*@RecordCount - */@PageSize * @PageIndex )+' '+@ID+' FROM '+@tableName+' ORDER BY '+@orderName+@sortName+' ) ORDER BY '+@orderName+@sortName
end
else
begin
SET @SQLSTR =N' SELECT TOP '+STR( @PageSize )+@strGetFields+@returnValue+' FROM '+@tableName+' where '+@ID+' not in (SELECT TOP '+STR(/*@RecordCount - */ @PageSize * @PageIndex )+@ID+' FROM '+@tableName+' where '+@strWhere+' ORDER BY '+@orderName+@sortName+' )and '+@strWhere+'ORDER BY '+@orderName+@sortName
end
end
EXEC (@SQLSTR)
set nocount off
GO
CREATE PROCEDURE sp_Get_FS
AS
BEGIN
execute sp_PageChange 0,12,0,0,'*','[SXGGW]','id','yesno=1',' addtime desc',''
execute sp_PageChange 1,12,0,0,'*','[SXGGW]','id','yesno=1',' addtime desc',''
execute sp_PageChange 2,12,0,0,'*','[SXGGW]','id','yesno=1',' addtime desc',''
execute sp_PageChange 3,12,0,0,'*','[SXGGW]','id','yesno=1',' addtime desc',''
END
GO
页面代码:
SqlDataAdapter adpt = new SqlDataAdapter("sp_Get_FS", ConfigurationManager.AppSettings["ConnectionString"]);
DataSet ds = new DataSet();
adpt.Fill(ds, "talbe");
dl_list1.DataSource = ds.Tables[0];
dl_list1.DataBind();
dl_list2.DataSource = ds.Tables[1];
dl_list2.DataBind();
dl_list3.DataSource = ds.Tables[2];
dl_list3.DataBind();
dl_list4.DataSource = ds.Tables[3];
dl_list4.DataBind();
分享到:
相关推荐
在本例中,我们探讨了如何在***应用程序中将一个包含多个表的DataSet绑定到数据控件Repeater,并演示了如何建立表之间的关系。 首先,我们要创建两个DataTable,分别代表用户表(BlogUser)和文章表(BlogArticle)。这...
本示例将详细介绍如何读取Excel文件中的单个或多个Sheet,并将其数据转换为DataSet或DataTable对象。这在数据分析、数据导入导出或者报表生成等场景中非常有用。 首先,我们需要一个能够处理Excel文件的库。在.NET ...
3. 处理数据:加载XML后,DataSet对象将包含一个或多个表,每个表对应XML文件中的一个元素。你可以通过`Tables`属性访问这些表,并对数据进行操作。 ```csharp DataTable dataTable = dataSet.Tables[0]; foreach ...
首先,DataSet是一个可以在应用程序中独立于数据库使用的数据集合,它可以包含多个DataTable,每个DataTable代表不同的数据表。在这个通讯录应用中,可能有一个DataTable用于存储姓名、电话号码、电子邮件等联系人...
在主从表关联中,主表通常包含一个或多个唯一标识,而从表则通过这些标识与主表建立关联。 首先,我们需要理解`DataGridView`的基本用法。它允许我们动态地加载和显示数据,可以通过数据绑定或者直接操作行和列来...
此方法接受多个参数,每个参数都有特定的功能: - `Type`:指定数据源类型,例如miDataSetADO表示使用ADO作为数据源类型。 - `SourceData`:指向数据源的具体位置。如果是通过ADODC控件加载的数据,则此处应为`...
`DataSet`是一个内存中的缓存,可以包含多个`DataTable`对象。 4. **设置`DataSource`属性**:将`DataSet`中的`DataTable`赋值给`DataGrid1`的`DataSource`属性。这一步指定了DataGrid的数据来源。 5. **设置`...
描述中的"DataSetApp应用例子"表明这是一个展示如何使用DataSet的实例应用。通过这个应用,开发者或学习者可以了解如何在实际项目中创建、填充、查询和更新数据集,以及如何处理数据集与其他数据源(如数据库)之间...
DataSet是.NET Framework中用于存储和操作关系数据的强大工具,它可以包含多个DataTable,每个表又可以有多个数据行。 首先,我们看到在`Default.aspx`文件中有一个ASP.NET的GridView控件,这通常用于显示和操作...
在这个例子中,当窗体加载时,查询数据库并将结果填充到数据集中,接着通过BindingSource将数据集与DataGridView绑定。这样,用户界面的交互可以直接作用于数据源,实现数据的增删改查。 综上所述,复杂数据绑定是...
在这个例子中,"TableName"是DataTable中的表名,`TreeView`将根据表中的行创建`TreeNode`。 ### 使用程序化方式添加TreeNode 如果数据源不支持直接的数据绑定,或者需要更精细的控制,可以手动创建和添加`...
在这个综合例子中,你可以通过实际操作来学习如何利用以上特性,创建一个功能完备、交互性强的DataGrid控件。无论是简单的数据展示还是复杂的业务操作,掌握DataGrid的使用都将对你的.NET开发工作大有裨益。
通过以上示例,我们可以总结出DataSet与DataTable的主要区别在于:DataSet可以包含多个DataTable,支持表间关系的定义,而DataTable则是一个单一的数据表。在实际应用中,如果操作简单,数据量不大,使用DataTable就...
总的来说,ADO.NET支持灵活地链接和操作多个数据库实例,通过有效地管理Connection对象和使用DataAdapter,可以在一个应用程序中集成来自不同源的数据。同时,数据绑定使得这些数据能够直观地呈现给用户,提高应用...
3. 填充数据集:数据集(DataSet)是内存中的数据缓存,可以容纳多个表。使用适配器的Fill方法将数据库中的数据填充到数据集中。 4. 绑定数据:将数据集或其中的DataTable绑定到datagrid,这样数据就能在控件中显示...
在这个例子中,通过`SetTreeViewNode`方法递归地创建`TreeNode`对象,并将其添加到`TreeView`控件中。 ```csharp private void SetTreeViewNode(DataTable dt, string parentID, TreeNode treeNode) { ... } ``...
DataSet不仅能够存储单一表格的数据,还能处理多个表格之间的关联,使得在应用程序中实现多表操作变得简单。 首先,让我们深入理解DataSet的工作原理。DataSet可以理解为一个离线的数据存储,它可以包含从数据库中...
在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中实现...这个例子涵盖了数据绑定、数据库连接、数据适配器的使用,以及用户界面的交互设计等多个关键知识点,是学习WPF应用程序开发的好起点。
C#是一种广泛应用于Windows平台开发的面向对象的编程...每个完整工程都可能针对上述一个或多个知识点进行深入讲解和实践,通过这些实例,你可以逐步掌握C#与Access数据库集成开发的核心技能,并提升自己的编程能力。