通过DataSet绑定多个表的例子

原创 2006年06月15日 17:22:00

相关存储过程:

-- =============================================
-- 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();

DevExpress使用dataset变量关联报表数据

这次的需求是希望使用DevExpress中的相关控件制作报表,而一般来说,不管是用微软自己的rdlc报表还是DevExpress,凡是涉及到数据绑定的环节基本上都是在讲如何直接连数据库然后做datab...
  • lpwmm
  • lpwmm
  • 2016年03月08日 22:06
  • 965

DataSet 多表更新方式

在DataAccess类中增加两个类成员变量:     private SqlDataAdapter _customerDataAdapter; //客户数据适配器     private SqlDa...
  • zyyjc
  • zyyjc
  • 2011年03月27日 21:45
  • 4715

C#一个DataSet中存入多个DataTable的方法

private void btn1_Click(object sender, System.EventArgs e)          {//创建数据集              DataSet ...
  • u012977846
  • u012977846
  • 2014年09月10日 15:36
  • 1457

ASP.NET 绑定DataSet中的多个表

今天在论坛遇到有人问如何在ASP.NET的数据控件中如何一次绑定多个表?这个问题,平时很少看到,一般在数据绑定之前,数据都是放在一个表中的,实际上,如果表之间存在关系,绑定多个表也是可以的。下面就是 ...
  • net_lover
  • net_lover
  • 2008年12月15日 21:25
  • 5284

RDLC 1个报表使用多个数据集

问题: 一个报表使用多个数据集的问题困扰了一个C#初学者多天,过程是这样的 程序中有两个数据集,分别为List数据集和DataSet数据集,在添加数据源时只能显示一个数据集,要么只有List,要么...
  • chunyuxia
  • chunyuxia
  • 2013年11月23日 16:20
  • 3201

WPF 中DataGrid控件绑定数据的一个例子

XAML 代码如下:
  • jian200801
  • jian200801
  • 2012年04月25日 18:09
  • 18399

Linq强大的查询功能,以及DataSet中多表之间交叉查询,字段过滤,筛选等

Linq强大查询功能 using System; ...
  • smartsmile2012
  • smartsmile2012
  • 2012年12月04日 10:29
  • 5567

DataSet无法找到表?

DataAdapter可以填充DataTablehttp://community.csdn.net/Expert/topic/4731/4731632.xml?temp=.7322809...
  • feifeile
  • feifeile
  • 2006年05月05日 18:23
  • 938

DataSet的应用(与GridView绑定)

  1)绑定到GridView控件,显示数据DataSet对象用DataAdapter的Fill方法填充。Fill有两种常用方法:int Fill(DateSet myDateSet,string d...
  • stevenjin
  • stevenjin
  • 2008年05月14日 18:28
  • 2943

Winform dataSet绑定相关控件数据

#region 绑定数据       ///        ///绑定数据        ///        ///       ///       private voidTimeMo...
  • CarryBest
  • CarryBest
  • 2017年01月10日 15:17
  • 591
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过DataSet绑定多个表的例子
举报原因:
原因补充:

(最多只允许输入30个字)