1
using
System;
2
using
System.Web.UI;
3
using
System.Web.UI.WebControls;
4
using
System.ComponentModel;
5
using
System.Drawing;
6
7
namespace
DataPage
8
{
9
public enum Position
{ Front, Back}
10
/**//// <summary>
11
/// WebDataPage 的摘要说明。
12
/// </summary>
13
[DefaultProperty("Text"),
14
ToolboxData("<{0}:WebDataPage runat=server></{0}:WebDataPage>")]
15
public class WebDataPage : System.Web.UI.WebControls.WebControl,INamingContainer
16
{
17
Function#region Function
18
19
GetInt#region GetInt
20
private int GetInt(object obj)
21
{
22
int iReturn = 0;
23
if( obj != null )
24
{
25
iReturn = (int)obj;
26
}
27
return iReturn;
28
}
29
#endregion
30
31
GetString#region GetString
32
private string GetString(string strValue)
33
{
34
return strValue;
35
}
36
private string GetString(object obj)
37
{
38
if( obj == null )
39
{
40
return "";
41
}
42
else
43
{
44
return obj.ToString();
45
}
46
}
47
#endregion
48
49
GetBoolean#region GetBoolean
50
private bool GetBoolean(object obj)
51
{
52
if( obj != null )
53
{
54
return (bool)obj;
55
}
56
else
57
{
58
return true;
59
}
60
}
61
#endregion
62
63
SetDropDownListValue#region SetDropDownListValue
64
private void SetDropDownListValue(DropDownList ddl, int iValue)
65
{
66
if( ddl != null )
67
{
68
for(int i=1; i<= iValue; i++)
69
{
70
ListItem lst = new ListItem();
71
lst.Value = i.ToString();
72
lst.Text = "第" + i.ToString() + "页";
73
ddl.Items.Add( lst );
74
}
75
}
76
}
77
#endregion
78
79
#endregion
80
81
页码#region 页码
82
83
PageCount 获取或设置总页数#region PageCount 获取或设置总页数
84
/**//// <summary>
85
/// 获取或设置总页数
86
/// </summary>
87
public int PageCount
88
{
89
get
90
{
91
if( PageSize == 0)
92
{
93
ViewState[ "PageCount" ] = 0;
94
}
95
else
96
{
97
if( RecordCount % PageSize > 0 )
98
{
99
ViewState[ "PageCount" ] = RecordCount / PageSize + 1;
100
}
101
else
102
{
103
ViewState[ "PageCount" ] = RecordCount / PageSize;
104
}
105
}
106
return GetInt( ViewState[ "PageCount" ] );
107
}
108
set
109
{
110
ViewState[ "PageCount" ] = value;
111
}
112
}
113
#endregion
114
115
RecordCount 获取或设置记录总数#region RecordCount 获取或设置记录总数
116
/**//// <summary>
117
/// 获取或设置记录总数
118
/// </summary>
119
public int RecordCount
120
{
121
get
122
{
123
return GetInt( ViewState[ "RecordCount" ] );
124
}
125
set
126
{
127
ViewState[ "RecordCount" ] = value;
128
}
129
}
130
#endregion
131
132
PageSize 设置每页显示的记录数#region PageSize 设置每页显示的记录数
133
/**//// <summary>
134
/// 设置每页显示的记录数
135
/// </summary>
136
public int PageSize
137
{
138
get
139
{
140
return GetInt( ViewState[ "PageSize" ] );
141
}
142
set
143
{
144
ViewState[ "PageSize" ] = value;
145
}
146
}
147
#endregion
148
149
CurrentPageIndex 获取或设置当前页#region CurrentPageIndex 获取或设置当前页
150
/**//// <summary>
151
/// 获取或设置当前页
152
/// </summary>
153
public int CurrentPageIndex
154
{
155
get
156
{
157
return GetInt( ViewState[ "CurrentPageIndex" ] );
158
}
159
set
160
{
161
ViewState[ "CurrentPageIndex" ] = value;
162
}
163
}
164
#endregion
165
166
#endregion
167
168
信息是否显示#region 信息是否显示
169
170
RecordCountIsVisible 总共N条记录是否显示#region RecordCountIsVisible 总共N条记录是否显示
171
/**//// <summary>
172
/// 总共N条记录是否显示
173
/// </summary>
174
public bool RecordCountIsVisible
175
{
176
get
177
{
178
return GetBoolean( ViewState[ "RecordCountIsVisible" ] );
179
}
180
set
181
{
182
ViewState[ "RecordCountIsVisible" ] = value;
183
}
184
}
185
#endregion
186
187
PageCountIsVisible 共N页是否显示#region PageCountIsVisible 共N页是否显示
188
/**//// <summary>
189
/// 共N页是否显示
190
/// </summary>
191
public bool PageCountIsVisible
192
{
193
get
194
{
195
return GetBoolean( ViewState[ "PageCountIsVisible" ] );
196
}
197
set
198
{
199
ViewState[ "PageCountIsVisible" ] = value;
200
}
201
}
202
#endregion
203
204
CurrentPageIndexIsVisible 第N页是否显示#region CurrentPageIndexIsVisible 第N页是否显示
205
/**//// <summary>
206
/// 第N页是否显示
207
/// </summary>
208
public bool CurrentPageIndexIsVisible
209
{
210
get
211
{
212
return GetBoolean( ViewState[ "CurrentPageIndexIsVisible" ] );
213
}
214
set
215
{
216
ViewState[ "CurrentPageIndexIsVisible" ] = value;
217
}
218
}
219
#endregion
220
221
FirstPageIsVisible 首页是否显示#region FirstPageIsVisible 首页是否显示
222
/**//// <summary>
223
/// 首页是否显示
224
/// </summary>
225
public bool FirstPageIsVisible
226
{
227
get
228
{
229
return GetBoolean( ViewState[ "FirstPageIsVisible" ] );
230
}
231
set
232
{
233
ViewState[ "FirstPageIsVisible" ] = value;
234
}
235
}
236
#endregion
237
238
PrevPageIsVisible 上一页是否显示#region PrevPageIsVisible 上一页是否显示
239
/**//// <summary>
240
/// 上一页是否显示
241
/// </summary>
242
public bool PrevPageIsVisible
243
{
244
get
245
{
246
return GetBoolean( ViewState[ "PrevPageIsVisible" ] );
247
}
248
set
249
{
250
ViewState[ "PrevPageIsVisible" ] = value;
251
}
252
}
253
#endregion
254
255
NextPageIsVisible 下一页是否显示#region NextPageIsVisible 下一页是否显示
256
/**//// <summary>
257
/// 下一页是否显示
258
/// </summary>
259
public bool NextPageIsVisible
260
{
261
get
262
{
263
return GetBoolean( ViewState[ "NextPageIsVisible" ] );
264
}
265
set
266
{
267
ViewState[ "NextPageIsVisible" ] = value;
268
}
269
}
270
#endregion
271
272
LastPageIsVisible 最后一页是否显示#region LastPageIsVisible 最后一页是否显示
273
/**//// <summary>
274
/// 最后一页是否显示
275
/// </summary>
276
public bool LastPageIsVisible
277
{
278
get
279
{
280
return GetBoolean( ViewState[ "LastPageIsVisible" ] );
281
}
282
set
283
{
284
ViewState[ "LastPageIsVisible" ] = value;
285
}
286
}
287
#endregion
288
289
SelectPageIsVisible 下拉列表框是否显示#region SelectPageIsVisible 下拉列表框是否显示
290
/**//// <summary>
291
/// 下拉列表框是否显示
292
/// </summary>
293
public bool SelectPageIsVisible
294
{
295
get
296
{
297
return GetBoolean( ViewState[ "SelectPageIsVisible" ] );
298
}
299
set
300
{
301
ViewState[ "SelectPageIsVisible" ] = value;
302
}
303
}
304
#endregion
305
306
#endregion
307
308
文本内容#region 文本内容
309
310
FirstPageText 首页文本内容#region FirstPageText 首页文本内容
311
/**//// <summary>
312
/// 首页文本内容
313
/// </summary>
314
public string FirstPageText
315
{
316
get
317
{
318
return GetString( ViewState[ "FirstPageText" ] );
319
}
320
set
321
{
322
ViewState[ "FirstPageText" ] = value;
323
}
324
}
325
#endregion
326
327
PrevPageText 上一页文本内容#region PrevPageText 上一页文本内容
328
/**//// <summary>
329
/// 上一页文本内容
330
/// </summary>
331
public string PrevPageText
332
{
333
get
334
{
335
return GetString( ViewState[ "PrevPageText" ] );
336
}
337
set
338
{
339
ViewState[ "PrevPageText" ] = value;
340
}
341
}
342
#endregion
343
344
NextPageText 下一页文本内容#region NextPageText 下一页文本内容
345
/**//// <summary>
346
/// 下一页文本内容
347
/// </summary>
348
public string NextPageText
349
{
350
get
351
{
352
return GetString( ViewState[ "NextPageText" ] );
353
}
354
set
355
{
356
ViewState[ "NextPageText" ] = value;
357
}
358
}
359
#endregion
360
361
LastPageText 最后一页文本内容#region LastPageText 最后一页文本内容
362
/**//// <summary>
363
/// 最后一页文本内容
364
/// </summary>
365
public string LastPageText
366
{
367
get
368
{
369
return GetString( ViewState[ "LastPageText" ] );
370
}
371
set
372
{
373
ViewState[ "LastPageText" ] = value;
374
}
375
}
376
#endregion
377
378
#endregion
379
380
获取或设置下拉列表框的位置#region 获取或设置下拉列表框的位置
381
public Position SelectPosition
382
{
383
get
384
{
385
if( ViewState["SelectPosition"] == null )
386
{
387
return Position.Back;
388
}
389
else
390
{
391
return (Position)ViewState["SelectPosition"];
392
}
393
}
394
set
395
{
396
ViewState["SelectPosition"] = value;
397
}
398
}
399
#endregion
400
401
402
CreateChildControls#region CreateChildControls
403
protected override void CreateChildControls()
404
{
405
this.Controls.Clear();
406
//Tanle
407
Table tb = new Table();
408
tb.ID = "tb";
409
this.Controls.Add( tb );
410
tb.Width = Unit.Percentage(100);
411
412
//tr
413
TableRow row = new TableRow();
414
row.ID = "row";
415
tb.Rows.Add( row );
416
417
总共N条记录#region 总共N条记录
418
TableCell cellRecordCount = new TableCell();
419
cellRecordCount.ID = "cellRecordCount";
420
row.Cells.Add( cellRecordCount );
421
cellRecordCount.VerticalAlign = VerticalAlign.Middle;
422
cellRecordCount.HorizontalAlign = HorizontalAlign.Center;
423
if( RecordCountIsVisible )
424
{
425
LiteralControl lcRecordCount = new LiteralControl();
426
lcRecordCount.ID = "lcRecordCount";
427
cellRecordCount.Controls.Add( lcRecordCount );
428
lcRecordCount.Text = "总共 " + RecordCount.ToString() + " 条记录";
429
}
430
#endregion
431
432
共N页#region 共N页
433
TableCell cellPageCount = new TableCell();
434
cellPageCount.ID = "cellPageCount";
435
row.Cells.Add( cellPageCount );
436
cellPageCount.VerticalAlign = VerticalAlign.Middle;
437
cellPageCount.HorizontalAlign = HorizontalAlign.Center;
438
if( PageCountIsVisible )
439
{
440
LiteralControl lcPageCount = new LiteralControl();
441
lcPageCount.ID = "lcPageCount";
442
cellPageCount.Controls.Add( lcPageCount );
443
lcPageCount.Text = "共 " + PageCount.ToString() + " 页";
444
}
445
#endregion
446
447
第N页#region 第N页
448
TableCell cellCurrentPageIndex = new TableCell();
449
cellCurrentPageIndex.ID = "cellCurrentPageIndex";
450
row.Cells.Add( cellCurrentPageIndex );
451
cellCurrentPageIndex.VerticalAlign = VerticalAlign.Middle;
452
cellCurrentPageIndex.HorizontalAlign = HorizontalAlign.Center;
453
if( CurrentPageIndexIsVisible )
454
{
455
LiteralControl lcCurrentPageIndex = new LiteralControl();
456
lcCurrentPageIndex.ID = "lcCurrentPageIndex";
457
cellCurrentPageIndex.Controls.Add( lcCurrentPageIndex );
458
lcCurrentPageIndex.Text = "第 " + CurrentPageIndex.ToString() + " 页";
459
}
460
#endregion
461
462
首页#region 首页
463
TableCell cellFirstPage = new TableCell();
464
cellFirstPage.ID = "cellFirstPage";
465
row.Cells.Add( cellFirstPage );
466
cellFirstPage.VerticalAlign = VerticalAlign.Middle;
467
cellFirstPage.HorizontalAlign = HorizontalAlign.Center;
468
if( FirstPageIsVisible )
469
{
470
LinkButton lbtnFirstPage = new LinkButton();
471
lbtnFirstPage.ID= "lbtnFirstPage";
472
cellFirstPage.Controls.Add( lbtnFirstPage );
473
lbtnFirstPage.Click +=new EventHandler(lbtnFirstPage_Click);
474
if( FirstPageText.Length > 0 )
475
{
476
lbtnFirstPage.Text = FirstPageText;
477
}
478
else
479
{
480
lbtnFirstPage.Text = "首页";
481
}
482
}
483
#endregion
484
485
上一页#region 上一页
486
TableCell cellPrevPage = new TableCell();
487
cellPrevPage.ID = "cellPrevPage";
488
row.Cells.Add( cellPrevPage );
489
cellPrevPage.VerticalAlign = VerticalAlign.Middle;
490
cellPrevPage.HorizontalAlign = HorizontalAlign.Center;
491
if( PrevPageIsVisible )
492
{
493
LinkButton lbtnPrevPage= new LinkButton();
494
lbtnPrevPage.ID = "lbtnPrevPage";
495
cellPrevPage.Controls.Add( lbtnPrevPage );
496
lbtnPrevPage.Click +=new EventHandler(lbtnPrevPage_Click);
497
if( PrevPageText.Length > 0 )
498
{
499
lbtnPrevPage.Text = PrevPageText;
500
}
501
else
502
{
503
lbtnPrevPage.Text = "上一页";
504
}
505
}
506
#endregion
507
508
下一页#region 下一页
509
TableCell cellNextPage = new TableCell();
510
cellNextPage.ID = "cellNextPage";
511
row.Cells.Add( cellNextPage );
512
cellNextPage.VerticalAlign = VerticalAlign.Middle;
513
cellNextPage.HorizontalAlign = HorizontalAlign.Center;
514
if( NextPageIsVisible )
515
{
516
LinkButton lbtnNextPage = new LinkButton();
517
lbtnNextPage.ID= "lbtnNextPage";
518
cellNextPage.Controls.Add( lbtnNextPage );
519
lbtnNextPage.Click +=new EventHandler(lbtnNextPage_Click);
520
if( NextPageText.Length > 0 )
521
{
522
lbtnNextPage.Text = NextPageText;
523
}
524
else
525
{
526
lbtnNextPage.Text = "下一页";
527
}
528
}
529
#endregion
530
531
最后一页#region 最后一页
532
TableCell cellLastPage = new TableCell();
533
cellLastPage.ID = "cellLastPage";
534
row.Cells.Add( cellLastPage );
535
cellLastPage.VerticalAlign = VerticalAlign.Middle;
536
cellLastPage.HorizontalAlign = HorizontalAlign.Center;
537
if( LastPageIsVisible )
538
{
539
LinkButton lbtnLastPage = new LinkButton();
540
lbtnLastPage.ID = "lbtnLastPage";
541
cellLastPage.Controls.Add( lbtnLastPage );
542
lbtnLastPage.Click +=new EventHandler(lbtnLastPage_Click);
543
if( LastPageText.Length > 0 )
544
{
545
lbtnLastPage.Text = LastPageText;
546
}
547
else
548
{
549
lbtnLastPage.Text = "最后一页";
550
}
551
}
552
#endregion
553
554
选择页码#region 选择页码
555
if( SelectPageIsVisible )
556
{
557
TableCell cellSelectPage = new TableCell();
558
cellSelectPage.ID = "cellSelectPage";
559
if( SelectPosition == Position.Front )
560
{
561
row.Cells.AddAt(0, cellSelectPage);
562
}
563
else
564
{
565
row.Cells.Add( cellSelectPage );
566
}
567
cellSelectPage.VerticalAlign = VerticalAlign.Middle;
568
cellSelectPage.HorizontalAlign = HorizontalAlign.Center;
569
570
DropDownList ddlSelectPage = new DropDownList();
571
ddlSelectPage.ID = "ddlSelectPage";
572
cellSelectPage.Controls.Add( ddlSelectPage );
573
SetDropDownListValue( ddlSelectPage, PageCount );
574
ddlSelectPage.SelectedIndex = CurrentPageIndex - 1;
575
ddlSelectPage.AutoPostBack = true;
576
ddlSelectPage.SelectedIndexChanged +=new EventHandler(ddlSelectPage_SelectedIndexChanged);
577
}
578
579
#endregion
580
581
base.CreateChildControls ();
582
}
583
#endregion
584
585
Change Pageindex#region Change Pageindex
586
587
首页#region 首页
588
private void lbtnFirstPage_Click(object sender, EventArgs e)
589
{
590
CurrentPageIndex = 1;
591
CreateChildControls();
592
SendPageChanged();
593
}
594
#endregion
595
596
上一页#region 上一页
597
private void lbtnPrevPage_Click(object sender, EventArgs e)
598
{
599
if( CurrentPageIndex > 1)
600
{
601
CurrentPageIndex = CurrentPageIndex - 1;
602
}
603
CreateChildControls();
604
SendPageChanged();
605
}
606
#endregion
607
608
下一页#region 下一页
609
private void lbtnNextPage_Click(object sender, EventArgs e)
610
{
611
if( CurrentPageIndex < PageCount )
612
{
613
CurrentPageIndex = CurrentPageIndex + 1;
614
}
615
CreateChildControls();
616
SendPageChanged();
617
}
618
#endregion
619
620
最后一页#region 最后一页
621
private void lbtnLastPage_Click(object sender, EventArgs e)
622
{
623
CurrentPageIndex = PageCount;
624
CreateChildControls();
625
SendPageChanged();
626
}
627
#endregion
628
629
选择页码#region 选择页码
630
private void ddlSelectPage_SelectedIndexChanged(object sender, EventArgs e)
631
{
632
DropDownList ddlSelectPage = sender as DropDownList;
633
if( ddlSelectPage != null )
634
{
635
CurrentPageIndex = Convert.ToInt32( ddlSelectPage.SelectedValue );
636
CreateChildControls();
637
SendPageChanged();
638
}
639
}
640
#endregion
641
642
#endregion
643
644
Event PageChanged#region Event PageChanged
645
public event EventHandler PageChanged;
646
#endregion
647
648
SendPageChange#region SendPageChange
649
private void SendPageChanged()
650
{
651
if(PageChanged != null)
652
{
653
PageChanged(this,EventArgs.Empty);
654
}
655
}
656
#endregion
657
658
659
}
660
}
661
使用方法:

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



316

317



318

319

320

321



322

323

324

325

326

327


328


329

330

331

332



333

334



335

336

337

338



339

340

341

342

343

344


345


346

347

348

349



350

351



352

353

354

355



356

357

358

359

360

361


362


363

364

365

366



367

368



369

370

371

372



373

374

375

376

377

378

379

380


381

382



383

384



385

386



387

388

389

390



391

392

393

394

395



396

397

398

399

400

401

402


403

404



405

406

407

408

409

410

411

412

413

414

415

416

417


418

419

420

421

422

423

424



425

426

427

428

429

430

431

432


433

434

435

436

437

438

439



440

441

442

443

444

445

446

447


448

449

450

451

452

453

454



455

456

457

458

459

460

461

462


463

464

465

466

467

468

469



470

471

472

473

474

475



476

477

478

479



480

481

482

483

484

485


486

487

488

489

490

491

492



493

494

495

496

497

498



499

500

501

502



503

504

505

506

507

508


509

510

511

512

513

514

515



516

517

518

519

520

521



522

523

524

525



526

527

528

529

530

531


532

533

534

535

536

537

538



539

540

541

542

543

544



545

546

547

548



549

550

551

552

553

554


555

556



557

558

559

560



561

562

563

564



565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585


586

587


588

589



590

591

592

593

594

595

596


597

598



599

600



601

602

603

604

605

606

607

608


609

610



611

612



613

614

615

616

617

618

619

620


621

622



623

624

625

626

627

628

629


630

631



632

633

634



635

636

637

638

639

640

641

642

643

644


645

646

647

648


649

650



651

652



653

654

655

656

657

658

659

660

661




