读书人

动态填充DataGrid^解决办法

发布时间: 2012-01-22 22:38:43 作者: rapoo

动态填充DataGrid^^^^^^^^^^^^^^^
项目中要做一个查询统计,(要跨库操作表)
我用的方法是在存储过程中把数据拼成了一张临时表,
但这个方法项目经理不同意


要做成前台好控制的方法:动态填充DataGrid,有那位高手帮助下,能给个小实例最好地址也成

下面是三个返回的DataSet

PortalId customs_name
----------- -------------
0 海关总署
91 广东分署
92 天津特派办
93 上海特派办
159 北京海关
169 天津海关
171 石家庄海关
176 太原海关
99 呼和浩特海关
164 满洲里海关
101 大连海关
102 沈阳海关
179 长春海关
118 哈尔滨海关
27 上海海关
119 南京海关
120 杭州海关
121 宁波海关
122 合肥海关
123 福州海关
156 厦门海关
167 南昌海关
105 青岛海关
106 郑州海关
107 武汉海关
108 长沙海关
31 广州海关
109 深圳海关
145 拱北海关
151 汕头海关
114 黄埔海关
115 江门海关
147 湛江海关
150 南宁海关
128 海口海关
153 重庆海关
130 成都海关
142 贵阳海关
174 昆明海关


182 拉萨海关
133 西安海关
125 兰州海关
190 西宁海关
127 银川海关
166 乌鲁木齐海关
135 上海关校
136 秦皇岛关校

(所影响的行数为 47 行)


PortalId TOTAL EmailServer SmsServer
----------- ----------- ----------- -----------
0 11 5 6
101 1 1 0


Type Portal_ID Cout
----- ----------- -----------
EMail 0 7
SMS 0 30
下面是我做的写的存储过程,

后台数据库:拼成的存储过程()

Create proc sp_totalAll
@Portal_ID int,
@StartTime datetime,
@EndTime datetime
as
CREATE TABLE #T1 (PID INT NOT NULL PRIMARY KEY,CUSTOMS_NAME NVARCHAR(50),TOTAL INT,STOTAL INT,ETOTAL INT,SCOUNT int,ECOUNT int)
DECLARE @vcSql VARCHAR(2400)

set @vcSql = 'INSERT INTO #T1 ([PID],[CUSTOMS_NAME])
select haiguan..Portal_customs.PortalId,haiguan..customs_list.customs_name from haiguan..customs_list left join haiguan..Portal_customs on haiguan..customs_list.customs_code=haiguan..Portal_customs.customs_code where haiguan..customs_list.superior= ' '0000 ' ' Order By ISNULL(haiguan..customs_list.SetOrder, 10000) '


set @vcSql = @vcSql + 'UPDATE #T1 SET TOTAL = S1.TOTAL, STOTAL = S1.SmsServer, ETOTAL = S1.EmailServer FROM
(SELECT POTAL_ID,Count(*) As TOTAL,
Sum(Case MSG_TYPE When 0 then 1 Else 0 End) As EmailServer,
Sum(Case MSG_TYPE When 1 then 1 Else 0 End) As SmsServer
FROM SMS_MODULEINFO Group By POTAL_ID) S1
WHERE #T1.PID = S1.POTAL_ID '

set @vcSql = @vcSql + 'update #T1 set SCOUNT = S1.Cout
from
(select Portal_ID, count(Portal_ID) as Cout from SMS_INFO where 1=1 and


Receive_TIME <= ' ' ' + cast(@EndTime as varchar(20)) + ' ' ' and Receive_TIME > = ' ' ' + cast(@StartTime as varchar(20)) + ' ' '
group by Portal_ID) S1
where #T1.PID = S1.Portal_ID '

set @vcSql = @vcSql + ' update #T1 set ECOUNT = S1.Cout
from
(select Portal_ID, count(Portal_ID) as Cout from EMAIL_INFO where 1=1 and
Receive_TIME <= ' ' ' + cast(@EndTime as varchar(20)) + ' ' ' and Receive_TIME > = ' ' ' + cast(@StartTime as varchar(20)) + ' ' '
group by Portal_ID) S1
where #T1.PID = S1.Portal_ID '

if(@Portal_ID <> -1)
begin
Set @vcSql = @vcSql + ' and #T1.PID = ' + cast(@Portal_ID as varchar(20))
end

exec(@vcSql)
select PID,CUSTOMS_NAME, isNULL(TOTAL,0) TOTAL,isnull(STOTAL,0) STOTAL,isnull(ETOTAL,0) ETOTAL,isnull(SCOUNT,0) SCOUNT,isnull(ECOUNT,0) ECOUNT from #T1

drop table #T1
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


这是我要显示在WEB页面上的结果  也是我存储过程所得出的结果,

PID CUSTOMS_NAME TOTAL STOTAL ETOTAL SCOUNT ECOUNT
----------- ------------------------------------------------- ----------- -----------
0 海关总署 11 6 5 0 0
27 上海海关 0 0 0 0 0
31 广州海关 0 0 0 0 0
91 广东分署 0 0 0 0 0


92 天津特派办 0 0 0 0 0
93 上海特派办 0 0 0 0 0
99 呼和浩特海关 0 0 0 0 0
101 大连海关 1 0 1 0 0
102 沈阳海关 0 0 0 0 0
105 青岛海关 0 0 0 0 0
106 郑州海关 0 0 0 0 0
107 武汉海关 0 0 0 0 0


108 长沙海关 0 0 0 0 0
109 深圳海关 0 0 0 0 0
114 黄埔海关 0 0 0 0 0
115 江门海关 0 0 0 0 0
118 哈尔滨海关 0 0 0 0 0
119 南京海关 0 0 0 0 0
120 杭州海关 0 0 0 0 0
121 宁波海关 0 0 0 0 0


122 合肥海关 0 0 0 0 0


[解决办法]
分为三个存储过程让他在前台选择,不同的选择就填充不同的DataSet就可以了啊。
[解决办法]
怎么结果上

SCOUNT ECOUNT
----------- -----------

两个字段都为0

读书人网 >asp.net

热点推荐