GridView可以非常方便的管理数据分页,只用设置几个简单的属性即可,为了了解其自动分页的性能,我做了一个测试。
第一步,打开SQL Server Express,建立一个数据表TestPaging,如下图,id字段是主键,postdate字段默认值是当前的时间。
第二步,向表中添加10万行数据,呵呵,数据少了看不出效果,如下图所示的SQL语句:
第三步,测试使用服务器控件自动管理分页的性能,建立一个页面TestGridViewPaging.aspx,在页面中添加一个SqlDataSource控件和一个GridView控件,再设置几个简单的属性,不到一分钟就完工,真的是简单方便啊。如下图:
下面是IDE自动生成的代码,我们把页面的跟踪功能打开:



2

3

4

5



6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

第四步,测试,结果发现该页面首次运行时需花时20多秒,如下图:
随便翻页,页面的运行时间都是8到9秒,如下:
第五步,建立TestCustomPaging.aspx页面,自己编写翻页代码,直接使用ADO.net编程,数据显示使用了DataGrid控件,同时,我再页面中使用了三个隐藏控件,分别用于保存每一页的第一条记录和最后一条记录的id以及当前页号,下面测试,结果发现不管是首次显示,还是上下翻页,都不超过0.05秒,如下图:
只有跳转到特定页面时速度稍慢,因为使用了嵌套查询,我主要是偷懒,如果使用存储过程的话,速度应该更快,如下图:
结论:使用微软提供的服务器控件,开发效率高,但是在访问数据量大的数据库时,速度非常慢,我想,该控件可能是每次访问时都将数据全部从数据库中取出,保存到内存中,如果数据量继续增加,或者访问人数增多,服务器会不会当机呢?而我自己编写的代码,每次只访问一个页面的数据,速度快,且性能不会随数据量增大而下降,更可以提供如下所示的更人性化的用户界面:
但是,我自己编写代码,从设计到调试完成,花了约2小时的时间。
开发效率: 服务器控件/自己编写代码 = 1分钟/2小时 = 1/120
运行效率: 服务器控件/自己编写代码 = 9秒/0.05秒 = 180/1
最后,我想问一下,各位有开发经验的大侠们,你们平时的开发中,是使用控件多一些,还是自己写代码多一些?
下面是我自己编写的页面的代码:



2



3



4

5

6

7



8

9

10

11

12

13

14

15

16

17

18



19

20

21

22

23

24

25

26

27



28

29

30

31

32

33

34

35

36

37

38

39

40



41

42

43

44

45

46

47



48

49

50

51

52



53

54

55

56

57

58

59

60



61

62

63

64

65

66

67

68



69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90



91

92

93

94

95

96

97

98

99

100

101

102

103

104

105



106

107

108

109

110



111

112

113

114

115



116

117

118

119

120



121

122

123

124

125

126

127

128



129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145



146

147

148

149

150



151

152

153

154

155



156

157

158

159

160



161

162

163

164

165

166

167

168



169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185



186

187

188

189

190



191

192

193

194

195



196

197

198

199

200



201

202

203

204

205

206

207

208



209

210

211

212

213

214

215

216

217

218

219

220

221

222

223



224

225

226

227

228



229

230

231

232

233



234

235

236

237

238



239

240

241

242

243

244

245

246

247



248

249

250

251

252



253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268



269

270

271

272

273



274

275

276

277

278



279

280

281

282

283



284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315
