0% found this document useful (0 votes)
17 views62 pages

Essential ASP.NET Web Forms Development: Full Stack Programming with C#, SQL, Ajax, and JavaScript 1st Edition Robert E. Beasley download

Essential ASP.NET Web Forms Development by Robert E. Beasley is a comprehensive guide to full stack programming using C#, SQL, Ajax, and JavaScript. The book covers web application development, server controls, data validation, and C# programming in detail. It is designed for developers looking to build modern web applications with ASP.NET and related technologies.

Uploaded by

twrkkgd428
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views62 pages

Essential ASP.NET Web Forms Development: Full Stack Programming with C#, SQL, Ajax, and JavaScript 1st Edition Robert E. Beasley download

Essential ASP.NET Web Forms Development by Robert E. Beasley is a comprehensive guide to full stack programming using C#, SQL, Ajax, and JavaScript. The book covers web application development, server controls, data validation, and C# programming in detail. It is designed for developers looking to build modern web applications with ASP.NET and related technologies.

Uploaded by

twrkkgd428
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Essential ASP.

NET Web Forms Development: Full


Stack Programming with C#, SQL, Ajax, and
JavaScript 1st Edition Robert E. Beasley
download
https://textbookfull.com/product/essential-asp-net-web-forms-
development-full-stack-programming-with-c-sql-ajax-and-
javascript-1st-edition-robert-e-beasley/

Download full version ebook from https://textbookfull.com


We believe these products will be a great fit for you. Click
the link to download now, or visit textbookfull.com
to discover even more!

Biota Grow 2C gather 2C cook Loucas

https://textbookfull.com/product/biota-grow-2c-gather-2c-cook-
loucas/

Full stack development with JHipster build full stack


applications and microservices with Spring Boot and
modern JavaScript frameworks Second Edition Sendil
Kumar N.
https://textbookfull.com/product/full-stack-development-with-
jhipster-build-full-stack-applications-and-microservices-with-
spring-boot-and-modern-javascript-frameworks-second-edition-
sendil-kumar-n/

Pro MERN Stack: Full Stack Web App Development with


Mongo, Express, React, and Node Vasan Subramanian

https://textbookfull.com/product/pro-mern-stack-full-stack-web-
app-development-with-mongo-express-react-and-node-vasan-
subramanian/

Full-Stack Web Development with Go: Build your web


applications quickly using the Go programming language
and Vue.js 1st Edition Nanik Tolaram

https://textbookfull.com/product/full-stack-web-development-with-
go-build-your-web-applications-quickly-using-the-go-programming-
language-and-vue-js-1st-edition-nanik-tolaram/
Mastering Full Stack React Web Development 1st Edition
Tomasz Dyl

https://textbookfull.com/product/mastering-full-stack-react-web-
development-1st-edition-tomasz-dyl/

Pro MERN Stack: Full Stack Web App Development with


Mongo, Express, React, and Node 1st Edition Vasan
Subramanian (Auth.)

https://textbookfull.com/product/pro-mern-stack-full-stack-web-
app-development-with-mongo-express-react-and-node-1st-edition-
vasan-subramanian-auth/

Pro MERN Stack: Full Stack Web App Development with


Mongo, Express, React, and Node 2nd Edition Vasan
Subramanian

https://textbookfull.com/product/pro-mern-stack-full-stack-web-
app-development-with-mongo-express-react-and-node-2nd-edition-
vasan-subramanian/

Web Development with Node and Express Leveraging the


JavaScript Stack 2nd Edition Ethan Brown

https://textbookfull.com/product/web-development-with-node-and-
express-leveraging-the-javascript-stack-2nd-edition-ethan-brown/

Full-Stack Web Development with Jakarta EE and Vue.js:


Your One-Stop Guide to Building Modern Full-Stack
Applications with Jakarta EE and Vue.js Daniel Andres
Pelaez Lopez
https://textbookfull.com/product/full-stack-web-development-with-
jakarta-ee-and-vue-js-your-one-stop-guide-to-building-modern-
full-stack-applications-with-jakarta-ee-and-vue-js-daniel-andres-
Essential ASP.NET
Web Forms
Development
Full Stack Programming with C#, SQL,
Ajax, and JavaScript

Robert E. Beasley
Essential ASP.NET Web
Forms Development
Full Stack Programming with C#,
SQL, Ajax, and JavaScript

Robert E. Beasley
Essential ASP.NET Web Forms Development: Full Stack Programming with C#, SQL,
Ajax, and JavaScript
Robert E. Beasley
Franklin, IN, USA

ISBN-13 (pbk): 978-1-4842-5783-8    ISBN-13 (electronic): 978-1-4842-5784-5


https://doi.org/10.1007/978-1-4842-5784-5

Copyright © 2020 by Robert E. Beasley


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the
trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not
identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Joan Murray
Development Editor: Laura Berendson
Coordinating Editor: Jill Balzano
Cover image designed by Freepik (www.freepik.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street,
6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-
sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member
(owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a
Delaware corporation.
For information on translations, please e-mail [email protected], or visit http://www.apress.com/
rights-permissions.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and
licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales
web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available to
readers on GitHub via the book’s product page, located at www.apress.com/9781484257838. For more
detailed information, please visit http://www.apress.com/source-code.
Printed on acid-free paper
To Elizabeth, Zachariah, Isaac, Nathanael, and Elijah
I Love You
Table of Contents
About the Author�����������������������������������������������������������������������������������������������������xv

Acknowledgments�������������������������������������������������������������������������������������������������xvii
Preface�������������������������������������������������������������������������������������������������������������������xix

Part I: Overview���������������������������������������������������������������������������������������������� 1
Chapter 1: Web Application Development���������������������������������������������������������������� 3
1.1 Introduction����������������������������������������������������������������������������������������������������������������������������� 3
1.2 Client-Server Model���������������������������������������������������������������������������������������������������������������� 4
1.3 .NET Framework��������������������������������������������������������������������������������������������������������������������� 8
1.4 Object-Orientation Concepts��������������������������������������������������������������������������������������������������� 9
1.4.1 Classes and Objects����������������������������������������������������������������������������������������������������� 10
1.4.2 Properties��������������������������������������������������������������������������������������������������������������������� 12
1.4.3 Methods������������������������������������������������������������������������������������������������������������������������ 12
1.4.4 Events��������������������������������������������������������������������������������������������������������������������������� 13
1.4.5 Encapsulation��������������������������������������������������������������������������������������������������������������� 13
1.4.6 Inheritance������������������������������������������������������������������������������������������������������������������� 14
1.5 ASP.NET and C# Programming���������������������������������������������������������������������������������������������� 21
1.6 Visual Studio������������������������������������������������������������������������������������������������������������������������� 22
1.7 Starting a New Project���������������������������������������������������������������������������������������������������������� 23
1.8 Solution Explorer������������������������������������������������������������������������������������������������������������������� 24

v
Table of Contents

Part II: Single-Page Web Application Development�������������������������������������� 27


Chapter 2: Page Development�������������������������������������������������������������������������������� 29
2.1 Introduction��������������������������������������������������������������������������������������������������������������������������� 29
2.2 Identifier Naming Standards������������������������������������������������������������������������������������������������� 29
2.3 Page Class���������������������������������������������������������������������������������������������������������������������������� 30
2.4 Adding a Page Class�������������������������������������������������������������������������������������������������������������� 32

Chapter 3: Basic Server Controls���������������������������������������������������������������������������� 39


3.1 Introduction��������������������������������������������������������������������������������������������������������������������������� 39
3.2 Toolbox���������������������������������������������������������������������������������������������������������������������������������� 39
3.3 Label Class���������������������������������������������������������������������������������������������������������������������������� 40
3.4 TextBox Class������������������������������������������������������������������������������������������������������������������������ 43
3.5 Button Class�������������������������������������������������������������������������������������������������������������������������� 45
3.6 Table Class���������������������������������������������������������������������������������������������������������������������������� 52
3.7 TableRow Class��������������������������������������������������������������������������������������������������������������������� 53
3.8 TableCell Class���������������������������������������������������������������������������������������������������������������������� 54

Chapter 4: More Server Controls���������������������������������������������������������������������������� 59


4.1 Introduction��������������������������������������������������������������������������������������������������������������������������� 59
4.2 Calendar Class���������������������������������������������������������������������������������������������������������������������� 59
4.3 CheckBox Class��������������������������������������������������������������������������������������������������������������������� 63
4.4 RadioButton Class����������������������������������������������������������������������������������������������������������������� 65
4.5 FileUpload Class�������������������������������������������������������������������������������������������������������������������� 68
4.6 HyperLink Class�������������������������������������������������������������������������������������������������������������������� 71
4.7 Image Class�������������������������������������������������������������������������������������������������������������������������� 72
4.8 ImageButton Class���������������������������������������������������������������������������������������������������������������� 74
4.9 ImageMap Class�������������������������������������������������������������������������������������������������������������������� 77
4.10 RectangleHotSpot Class������������������������������������������������������������������������������������������������������ 78
4.11 LinkButton Class����������������������������������������������������������������������������������������������������������������� 82
4.12 ListControl Class����������������������������������������������������������������������������������������������������������������� 87
4.13 ListItem Class���������������������������������������������������������������������������������������������������������������������� 89

vi
Table of Contents

4.14 DropDownList Class������������������������������������������������������������������������������������������������������������ 90


4.15 ListBox Class����������������������������������������������������������������������������������������������������������������������� 92
4.16 Panel Class������������������������������������������������������������������������������������������������������������������������� 94

Chapter 5: Data Validation Controls������������������������������������������������������������������������ 99


5.1 Introduction��������������������������������������������������������������������������������������������������������������������������� 99
5.2 Script Manager Package����������������������������������������������������������������������������������������������������� 101
5.3 BaseValidator Class������������������������������������������������������������������������������������������������������������ 101
5.4 RequiredFieldValidator Class���������������������������������������������������������������������������������������������� 103
5.5 CompareValidator Class������������������������������������������������������������������������������������������������������ 105
5.6 RangeValidator Class���������������������������������������������������������������������������������������������������������� 107
5.7 RegularExpressionValidator Class��������������������������������������������������������������������������������������� 110
5.8 CustomValidator Class�������������������������������������������������������������������������������������������������������� 114
5.9 ValidationSummary Class��������������������������������������������������������������������������������������������������� 117

Part III: C# Programming���������������������������������������������������������������������������� 123


Chapter 6: Assignment Operations����������������������������������������������������������������������� 125
6.1 Introduction������������������������������������������������������������������������������������������������������������������������� 125
6.2 Types����������������������������������������������������������������������������������������������������������������������������������� 125
6.3 Variable Declarations���������������������������������������������������������������������������������������������������������� 127
6.4 Constant Declarations��������������������������������������������������������������������������������������������������������� 130
6.5 Assignment Operators��������������������������������������������������������������������������������������������������������� 130
6.6 Enumerations���������������������������������������������������������������������������������������������������������������������� 133
6.7 Exception Handling������������������������������������������������������������������������������������������������������������� 134
6.8 Exception Class������������������������������������������������������������������������������������������������������������������� 135
6.8.1 DivideByZeroException Class������������������������������������������������������������������������������������� 137
6.8.2 FormatException Class����������������������������������������������������������������������������������������������� 138
6.8.3 IndexOutOfRangeException Class������������������������������������������������������������������������������� 139
6.8.4 OverflowException Class�������������������������������������������������������������������������������������������� 141
6.8.5 Multiple Exceptions���������������������������������������������������������������������������������������������������� 142

vii
Table of Contents

Chapter 7: Conversion Operations������������������������������������������������������������������������ 145


7.1 Introduction������������������������������������������������������������������������������������������������������������������������� 145
7.2 Widening Conversions��������������������������������������������������������������������������������������������������������� 145
7.3 Narrowing Conversions������������������������������������������������������������������������������������������������������� 148
7.4 Convert Class���������������������������������������������������������������������������������������������������������������������� 153

Chapter 8: Control Operations������������������������������������������������������������������������������ 161


8.1 Introduction������������������������������������������������������������������������������������������������������������������������� 161
8.2 Relational Operators����������������������������������������������������������������������������������������������������������� 162
8.3 Equality Operators��������������������������������������������������������������������������������������������������������������� 162
8.4 Logical Operators���������������������������������������������������������������������������������������������������������������� 163
8.5 Decision Structures������������������������������������������������������������������������������������������������������������� 164
8.5.1 If Structure����������������������������������������������������������������������������������������������������������������� 164
8.5.2 If-Else Structure��������������������������������������������������������������������������������������������������������� 167
8.5.3 If-Else-If Structure������������������������������������������������������������������������������������������������������ 168
8.5.4 Nested-If Structure����������������������������������������������������������������������������������������������������� 169
8.5.5 Switch Structure��������������������������������������������������������������������������������������������������������� 171
8.5.6 Switch-Through Structure������������������������������������������������������������������������������������������ 173
8.6 Iterative Structures������������������������������������������������������������������������������������������������������������� 174
8.6.1 While Structure����������������������������������������������������������������������������������������������������������� 174
8.6.2 Do-While Structure����������������������������������������������������������������������������������������������������� 175
8.6.3 For Structure�������������������������������������������������������������������������������������������������������������� 176
8.6.4 For-Each Structure����������������������������������������������������������������������������������������������������� 178
8.6.5 Break Statement��������������������������������������������������������������������������������������������������������� 180
8.6.6 Continue Statement���������������������������������������������������������������������������������������������������� 180

Chapter 9: String Operations�������������������������������������������������������������������������������� 183


9.1 Introduction������������������������������������������������������������������������������������������������������������������������� 183
9.2 Concatenations������������������������������������������������������������������������������������������������������������������� 183
9.3 Escape Sequences�������������������������������������������������������������������������������������������������������������� 184
9.4 Verbatim Literals����������������������������������������������������������������������������������������������������������������� 186
9.5 String Class������������������������������������������������������������������������������������������������������������������������� 186

viii
Table of Contents

Chapter 10: Arithmetic Operations����������������������������������������������������������������������� 193


10.1 Introduction����������������������������������������������������������������������������������������������������������������������� 193
10.2 Arithmetic Operators��������������������������������������������������������������������������������������������������������� 194
10.3 Order of Precedence and Associativity����������������������������������������������������������������������������� 197
10.4 Parentheses���������������������������������������������������������������������������������������������������������������������� 199
10.5 Math Class������������������������������������������������������������������������������������������������������������������������ 201

Chapter 11: Date and Time Operations����������������������������������������������������������������� 207


11.1 Introduction����������������������������������������������������������������������������������������������������������������������� 207
11.2 DateTime Structure����������������������������������������������������������������������������������������������������������� 208
11.3 Date-Related Properties���������������������������������������������������������������������������������������������������� 211
11.4 Date-Related Methods������������������������������������������������������������������������������������������������������ 212
11.5 Date Formatting���������������������������������������������������������������������������������������������������������������� 213
11.6 Date Parsing���������������������������������������������������������������������������������������������������������������������� 214
11.7 Time-Related Properties��������������������������������������������������������������������������������������������������� 216
11.8 Time-Related Methods������������������������������������������������������������������������������������������������������ 216
11.9 Time Formatting���������������������������������������������������������������������������������������������������������������� 218

Chapter 12: Array Operations������������������������������������������������������������������������������� 221


12.1 Introduction����������������������������������������������������������������������������������������������������������������������� 221
12.2 Array Class������������������������������������������������������������������������������������������������������������������������ 222
12.3 One-Dimensional Arrays��������������������������������������������������������������������������������������������������� 224
12.4 Two-Dimensional Arrays��������������������������������������������������������������������������������������������������� 231

Chapter 13: Collection Operations������������������������������������������������������������������������ 241


13.1 Introduction����������������������������������������������������������������������������������������������������������������������� 241
13.2 Stack Class����������������������������������������������������������������������������������������������������������������������� 242
13.3 Queue Class���������������������������������������������������������������������������������������������������������������������� 244
13.4 LinkedList Class���������������������������������������������������������������������������������������������������������������� 246
13.5 SortedList Class���������������������������������������������������������������������������������������������������������������� 250

ix
Table of Contents

Chapter 14: File System Operations��������������������������������������������������������������������� 253


14.1 Introduction����������������������������������������������������������������������������������������������������������������������� 253
14.2 File Class��������������������������������������������������������������������������������������������������������������������������� 254

Chapter 15: Custom C# Classes���������������������������������������������������������������������������� 265


15.1 Introduction����������������������������������������������������������������������������������������������������������������������� 265
15.2 Class Design��������������������������������������������������������������������������������������������������������������������� 266
15.3 C# Class���������������������������������������������������������������������������������������������������������������������������� 267
15.4 Adding a Classes Folder���������������������������������������������������������������������������������������������������� 268
15.5 Adding a Non-static C# Class�������������������������������������������������������������������������������������������� 268
15.6 Adding a Static C# Class��������������������������������������������������������������������������������������������������� 273

Part IV: Multiple-Page Web Application Development�������������������������������� 279


Chapter 16: State Maintenance���������������������������������������������������������������������������� 281
16.1 Introduction����������������������������������������������������������������������������������������������������������������������� 281
16.2 Client-Based State Maintenance�������������������������������������������������������������������������������������� 282
16.2.1 View State����������������������������������������������������������������������������������������������������������������� 282
16.2.2 Cookies��������������������������������������������������������������������������������������������������������������������� 284
16.2.3 Query Strings������������������������������������������������������������������������������������������������������������ 289
16.3 Server-Based State Maintenance������������������������������������������������������������������������������������� 294
16.3.1 Session State������������������������������������������������������������������������������������������������������������ 294
16.3.2 HttpSessionState Class�������������������������������������������������������������������������������������������� 296
16.4 Maintaining the State of a Data Structure������������������������������������������������������������������������ 301

Chapter 17: Master Pages������������������������������������������������������������������������������������ 303


17.1 Introduction����������������������������������������������������������������������������������������������������������������������� 303
17.2 MasterPage Class������������������������������������������������������������������������������������������������������������� 303
17.3 Adding a MasterPage Class���������������������������������������������������������������������������������������������� 305
17.4 Adding a Page Class with a MasterPage��������������������������������������������������������������������������� 309

x
Table of Contents

Chapter 18: Themes���������������������������������������������������������������������������������������������� 323


18.1 Introduction����������������������������������������������������������������������������������������������������������������������� 323
18.2 Adding a Theme���������������������������������������������������������������������������������������������������������������� 323
18.3 Skin Files�������������������������������������������������������������������������������������������������������������������������� 325
18.4 Adding a Skin File������������������������������������������������������������������������������������������������������������� 325
18.5 Cascading Style Sheet Files���������������������������������������������������������������������������������������������� 332
18.6 Adding a Cascading Style Sheet File��������������������������������������������������������������������������������� 333

Chapter 19: Navigation����������������������������������������������������������������������������������������� 343


19.1 Introduction����������������������������������������������������������������������������������������������������������������������� 343
19.2 SiteMap Class������������������������������������������������������������������������������������������������������������������� 344
19.3 Adding a SiteMap Class���������������������������������������������������������������������������������������������������� 345
19.4 Menu Class����������������������������������������������������������������������������������������������������������������������� 349
19.5 TreeView Class������������������������������������������������������������������������������������������������������������������ 353

Part V: Database Connectivity�������������������������������������������������������������������� 357


Chapter 20: Database Design, SQL, and Data Binding������������������������������������������ 359
20.1 Introduction����������������������������������������������������������������������������������������������������������������������� 359
20.2 Database Schema������������������������������������������������������������������������������������������������������������� 360
20.3 Tables�������������������������������������������������������������������������������������������������������������������������������� 361
20.4 Attributes�������������������������������������������������������������������������������������������������������������������������� 362
20.5 Relationships�������������������������������������������������������������������������������������������������������������������� 363
20.6 Structured Query Language���������������������������������������������������������������������������������������������� 364
20.6.1 Select Statement������������������������������������������������������������������������������������������������������ 366
20.6.2 Insert Statement������������������������������������������������������������������������������������������������������� 374
20.6.3 Update Statement����������������������������������������������������������������������������������������������������� 377
20.6.4 Delete Statement������������������������������������������������������������������������������������������������������ 378
20.7 DataBoundControl Class��������������������������������������������������������������������������������������������������� 379
20.8 SqlDataSource Class��������������������������������������������������������������������������������������������������������� 380
20.8.1 Connection Strings��������������������������������������������������������������������������������������������������� 383
20.8.2 Data-Bound Control Population�������������������������������������������������������������������������������� 384
20.8.3 Data-Bound Control Filtering������������������������������������������������������������������������������������ 386
xi
Table of Contents

Chapter 21: Single-Row Database Table Maintenance����������������������������������������� 395


21.1 Introduction����������������������������������������������������������������������������������������������������������������������� 395
21.2 FormView Class���������������������������������������������������������������������������������������������������������������� 395

Chapter 22: Multiple-Row Database Table Maintenance�������������������������������������� 419


22.1 Introduction����������������������������������������������������������������������������������������������������������������������� 419
22.2 ListView Class������������������������������������������������������������������������������������������������������������������� 420
22.3 DataPager Class���������������������������������������������������������������������������������������������������������������� 441
22.4 NextPreviousPagerField Class������������������������������������������������������������������������������������������ 442
22.5 NumericPagerField Class�������������������������������������������������������������������������������������������������� 445

Chapter 23: Code Behind Database Operations���������������������������������������������������� 449


23.1 Introduction����������������������������������������������������������������������������������������������������������������������� 449
23.2 SqlConnection Class��������������������������������������������������������������������������������������������������������� 450
23.3 WebConfigurationManager Class�������������������������������������������������������������������������������������� 452
23.4 SqlCommand Class����������������������������������������������������������������������������������������������������������� 453
23.5 SqlDataReader Class��������������������������������������������������������������������������������������������������������� 455
23.6 Non-parameterized Queries���������������������������������������������������������������������������������������������� 458
23.7 Parameterized Queries������������������������������������������������������������������������������������������������������ 463
23.7.1 SqlParameterCollection Class���������������������������������������������������������������������������������� 464
23.7.2 SqlParameter Class�������������������������������������������������������������������������������������������������� 465
23.8 Stored Procedures������������������������������������������������������������������������������������������������������������ 471

Part VI: Additional Functionality����������������������������������������������������������������� 487


Chapter 24: Email Messaging������������������������������������������������������������������������������� 489
24.1 Introduction����������������������������������������������������������������������������������������������������������������������� 489
24.2 Development Machine Email Server��������������������������������������������������������������������������������� 490
24.3 MailMessage Class����������������������������������������������������������������������������������������������������������� 490
24.4 SmtpClient Class��������������������������������������������������������������������������������������������������������������� 492

xii
Table of Contents

Chapter 25: Ajax Programming���������������������������������������������������������������������������� 499


25.1 Introduction����������������������������������������������������������������������������������������������������������������������� 499
25.2 ScriptManager Class��������������������������������������������������������������������������������������������������������� 500
25.3 Extension Classes������������������������������������������������������������������������������������������������������������� 501
25.3.1 UpdatePanel Class���������������������������������������������������������������������������������������������������� 501
25.3.2 UpdateProgress Class���������������������������������������������������������������������������������������������� 504
25.4 Ajax Control Toolkit������������������������������������������������������������������������������������������������������������ 507
25.4.1 Installing the Ajax Control Toolkit����������������������������������������������������������������������������� 507
25.4.2 Control Classes��������������������������������������������������������������������������������������������������������� 509
25.4.3 Control Extender Classes������������������������������������������������������������������������������������������ 517

Chapter 26: JavaScript Programming������������������������������������������������������������������ 533


26.1 Introduction����������������������������������������������������������������������������������������������������������������������� 533
26.2 Browser Compatibility������������������������������������������������������������������������������������������������������� 534
26.3 Script Elements����������������������������������������������������������������������������������������������������������������� 535
26.4 Functions�������������������������������������������������������������������������������������������������������������������������� 535
26.5 HTML Document Object Model������������������������������������������������������������������������������������������ 536
26.6 Examples�������������������������������������������������������������������������������������������������������������������������� 537
26.6.1 Assignment Operations�������������������������������������������������������������������������������������������� 538
26.6.2 Confirm Dialogs and Alert Messages������������������������������������������������������������������������ 544
26.6.3 Control Property Manipulation���������������������������������������������������������������������������������� 547
26.6.4 Date and Time Display���������������������������������������������������������������������������������������������� 550
26.6.5 Iterative Operations�������������������������������������������������������������������������������������������������� 553

Index��������������������������������������������������������������������������������������������������������������������� 559

xiii
About the Author
Robert E. Beasley is Professor of Computing at Franklin College in Franklin, Indiana,
USA, where he teaches a variety of software engineering courses. He received both his
BS and MS degrees from Illinois State University and his PhD from the University of
Illinois at Urbana-Champaign. He has been developing software since 1981, has been
an active software consultant in both the public and private sectors since 1987, and has
been teaching software engineering since 1995. He has authored three books on software
engineering, contributed chapters to two books, published over 50 articles in refereed
journals and conference proceedings, and delivered numerous speeches and keynote
addresses at international conferences.

xv
Acknowledgments
For any project like this to be successful, input is required from a number of people.
I would like to thank David G. Barnette for providing a significant amount of technical
feedback on the entire book, Elijah M. Beasley for providing a number of suggestions
for improving the flow and continuity of the book, and my other software engineering
students for reporting misspellings, typos, and other defects as they were encountered.

xvii
Preface
Audience
This book was written for anyone interested in learning the ASP.NET Web Forms,
C#.NET, SQL, Ajax, and JavaScript Web application development stack, including
novice software developers, professional software developers, and college or university
students enrolled in a one-semester course or two-semester sequence of courses in Web
application development.

Organization
This book helps you become a pro in one of the most effective and widely used
technology stacks for developing highly interactive, professional-grade, database-driven
Web applications—ASP.NET Web Forms, C#.NET, SQL, Ajax, and JavaScript. It takes
you from beginner to pro in no time. In Part 1, you become familiar with some of the
major concepts, methodologies, and technologies associated with .NET Web application
development. In this part, you learn about the client-server model, the .NET Framework,
the ASP.NET and C# programming languages, and the Visual Studio integrated
development environment. In Part 2, you learn how to develop a single-page .NET
Web application. In this part, you learn how to create a page and add server and data
validation controls to it. The concepts in this part of the book lay the foundation required
for learning the C# programming language in the context of an ASP.NET Web application.
In Part 3, you learn how to program in the C# programming language. In this part, you
learn how to perform assignment operations, conversion operations, control operations,
string operations, arithmetic operations, date and time operations, array operations,
collection operations, and file system operations, as well as create custom C# classes—in
the context of a .NET Web application. In Part 4, you learn how to develop a multiple-­
page .NET Web application. In this part, you learn how to maintain state between pages
and create master pages, themes, and navigation controls. In Part 5, you learn how to
connect a .NET Web application to a SQL Server database. In this part, you learn to read
a database schema, program in the SQL programming language, utilize data binding,

xix
Preface

perform single- and multiple-row database table maintenance, and write code behind
database operations. And in Part 6, you learn how to enhance the interactivity of a .NET
Web application. In this part, you learn to generate email messages, make use of basic
Ajax controls and the Ajax Control Toolkit, and program in the JavaScript programming
language.

Features
Class Focus
A class diagram is included for every class discussed in the text. Each class diagram
articulates some of the most important properties, methods, and events of the class. For
those properties, methods, and events that are not included in the class diagram, a link
to the official class reference is provided.

Real-Life Examples
A significant proportion of the examples in the text are drawn from the real-life
experiences of the author’s own software development practice that began in 1987.

Clear-Minded, Consistent, and Concise Prose


Every effort has been made to present concepts clearly and logically, utilize consistent
language and terminology across all chapters and topics, and articulate concepts fully
yet concisely.

Accessible Language
Although the subject matter of this book is highly technical and specialized, trendy and/
or arcane language that is inaccessible to the average learner is either clearly defined or
replaced in favor of clear and generalizable terminology.

xx
PART I

Overview
CHAPTER 1

Web Application
Development
1.1 Introduction
The concept of hypermedia (i.e., the combination of hypertext and media) was first
envisioned in 1945 by American engineer, inventor, and science administrator Vannevar
Bush. However, it wasn’t until much later that the technology required to support such a
concept was mature enough to make hypermedia something most of us take for granted today.
In 1969, the Advanced Research Projects Agency Network (ARPANET) became the
first computer network to implement packet switching using the Transmission Control
Protocol/Internet Protocol (TCP/IP) suite—the protocol suite that forms the technical
foundation of the Internet today. Packet switching is a method of data transmission
that requires three basic steps to get data (e.g., remote computer screens, files, email
messages, Web pages) from one computer on a network to another. First, at its origin, the
data to be transmitted is separated into a sequenced set of relatively small parts called
packets. Second, the packets are transmitted independently from their origin to their
final destination over routes that have been determined to be optimal for each packet.
And third, after all the packets have made their way to their final destination, the data is
reassembled from its packets. Early TCP/IP Application Layer protocols included Telnet
for logging in to remote computers, File Transfer Protocol (FTP) for transmitting files
from one computer to another, and Simple Mail Transfer Protocol (SMTP) for sending
email messages. These protocols are still in heavy use today.
Although the Internet was alive, well, and growing from the late 1960s through the late
1980s, there was no World Wide Web (a.k.a., Web). However, this was about to change.
In 1989, development of the Hypertext Transfer Protocol (HTTP) was initiated by English
scientist Tim Berners-Lee at the European Organization for Nuclear Research (a.k.a., CERN)
in Meyrin, Switzerland—a suburb of Geneva. This protocol was to become the standard for

3
© Robert E. Beasley 2020
R. E. Beasley, Essential ASP.NET Web Forms Development, https://doi.org/10.1007/978-1-4842-5784-5_1
Chapter 1 Web Application Development

governing the communication between distributed hypermedia systems. With the definition
of the first official version of HTTP in 1991, the Web, the hypermedia part of the Internet, was
born, and HTTP became another TCP/IP Application Layer protocol like its predecessors
Telnet, FTP, and SMTP. Shortly thereafter, Berners-Lee created the very first Web browser.
This browser became available to other researchers in January 1991 and was released to the
public in August 1991.
Early on, the Web was simply a large collection of static Web pages. These pages
did little more than display formatted text and visual media (i.e., images, graphics,
animations, videos) and permit us to download files and play audio recordings. Today,
however, the Web is a massive collection of both static and dynamic Web pages. And
thanks to programming languages like ASP.NET, dynamic Web pages can do much more
than static Web pages can. In addition to the things static Web pages allow us to do,
dynamic Web pages allow us to interact with the items displayed on a Web page. They
also permit us to do things like edit the data on a page, check the data for errors, and save
the data to a database.
In this chapter, we will begin by looking at the client-server model, which is a
computing approach that distributes processing between servers and clients. Next, we
will introduce the .NET Framework. The .NET Framework is Microsoft’s Windows-based
software development and execution framework. Then, we will discuss ASP.NET and
C# programming. ASP.NET is a software development framework that includes all of
the classes necessary for building modern, sophisticated Web applications, and C# is
a general-purpose programming language for building a variety of application types,
including Web applications and Windows applications. After that, we will look at Visual
Studio, which is Microsoft’s flagship integrated development environment (IDE). This
development environment permits us to code and test in several different programming
languages via a consistent user interface. And finally, we will learn how to start a new
ASP.NET Web Application project.

1.2 Client-Server Model


The client-server model is a computing approach that distributes processing between
a server (i.e., the provider of a resource, service, or application) and its clients (i.e.,
the users of a resource, service, or application). A server is composed of a server host,
which is a physical computing device connected to a network, and a server application,
which is a software program that manages multiple, simultaneous client access to the

4
Chapter 1 Web Application Development

server. Likewise, a client is composed of a client host, which is a physical computing


device connected to a network, and a client application, which is a software program
that initiates a session with a server so that it can access the server’s resources, services,
and/or applications. Examples of client-server systems include Web servers and Web
clients, email servers and email clients, and FTP servers and FTP clients. Examples of
Web server applications include Internet Information Services (IIS), Apache HTTP Server,
and Oracle iPlanet Web Server. Examples of Web client applications include Microsoft
Internet Explorer, Google Chrome, and Mozilla Firefox. Web client applications are
usually called Web browsers.
Figure 1-1 shows an example of the client-server model as it applies to a Web
application. In the middle of the figure, we see a Web server. As mentioned previously,
this server is composed of a server host and a server application that manages client
access to the host. Connected to this server via a network (e.g., the Internet) are a
number of different clients, including a tablet client, a laptop client, a Mac client, a PC
client, and a phone client. The dotted line in the figure indicates that the phone client
is connected to the Internet wirelessly. Of course, any server or client can be connected
to the Internet wirelessly. Again, each of these clients is composed of a client host and a
client application that initiates a session with the server and then accesses the server’s
resources, services, and/or applications.

Figure 1-1. Example of the client-server model as it applies to a Web


application

5
Chapter 1 Web Application Development

Recall that Web pages are either static or dynamic. The content and appearance of
a static Web page doesn’t change each time it is requested. Instead, it always looks the
same no matter how many times it is requested or who requests it. It is easy to tell if a
Web page is static because it has a file extension of .htm or .html. As we will see in the
next figure, this type of Web page only requires the attention of a Web server.
Figure 1-2 shows the processing cycle of a static Web page. As can be seen, a Web
client (e.g., a laptop computer running Internet Explorer) requests a Web page from a
Web server (e.g., a tower computer running IIS) via an HTTP request. One important
part of this request is the name of the requested Web page (e.g., Display_Products.html).
Two other important parts of the request are the IP addresses (i.e., the unique Internet
addresses) of the server and client. These are necessary so that the HTTP request can
make its way to the Web server and so that the requested Web page can make its way
back to the requesting Web client. When the Web server receives the HTTP request, it
locates the desired Web page file on its hard drive, attaches the file’s Hypertext Markup
Language (HTML) code to an HTTP response, and then sends the response to the
requesting Web client. When the Web client receives the HTTP response, it uses the
attached HTML code to format and display the requested Web page for the end user. If
the requested Web page does not exist on the server, the infamous 404 (i.e., Page Not
Found) error is passed back to the Web client where it is displayed for the end user.

Figure 1-2. Processing cycle of a static Web page

Unlike the content and appearance of a static Web page, a dynamic Web page can
(and usually does) change each time it is requested. In fact, depending on when it is
requested and by whom, it usually contains different information (e.g., different customer
information) and can look completely different (e.g., different fields, different images). It is
easy to tell if a Web page is dynamic because it has a file extension that is associated with
dynamic Web pages. Examples of such file extensions are .aspx (active server page), .php
(hypertext preprocessor), and .jsp (java server page). As we will see in the next figure, this
type of Web page is processed by both a Web server and an application server. When a Web
application requires database functionality, a database server is required as well.
6
Chapter 1 Web Application Development

Figure 1-3 shows the processing cycle of a dynamic Web page. As before, a Web client
requests a Web page from a Web server via an HTTP request. In this case, however, the
request contains the name of a dynamic Web page (e.g., Display_Products.aspx) and the
state of any Web page controls (e.g., a name entered into a text box, a check mark placed
into a checkbox, a date selected from a calendar). When the Web server receives the
HTTP request and sees that the Web page has a file extension of .aspx, it passes processing
control to the application server where the business logic (e.g., ASP.NET and C# code)
of the Web page is executed. If the business logic of the Web page requires the services
of a database server (i.e., reading, inserting, updating, or deleting data), the application
server passes processing control to the database server (along with any pertinent input
parameters) where the database call (usually a Structured Query Language [SQL] call)
of the Web page is executed. Once the database call is executed, the response from the
database server (e.g., the retrieved data and/or the status of the call) is passed back to the
application server where it is processed (e.g., the retrieved data is formatted and/or the
status of the call is handled). After this, the application server passes its work back to the
Web server, where it locates the desired Web page file on its hard drive, formats the Web
page’s HTML based on the results of the application server’s work, attaches the resulting
HTML code to an HTTP response, and then sends the response to the requesting Web
client. When the Web client receives the HTTP response, it uses the attached HTML code
to format and display the requested Web page for the end user. Again, if the requested Web
page does not exist on the server, the infamous 404 (i.e., Page Not Found) error is passed
back to the Web client where it is displayed for the end user.

Figure 1-3. Processing cycle of a dynamic Web page

Keep in mind that although servers and clients usually run on separate computing
devices, they can run on the same device. As an example of the latter, we often use a Web
server (e.g., IIS Express), an application server (e.g., .NET Framework), a database server
(e.g., SQL Server), and a Web client (e.g., Internet Explorer) all installed on the same
machine when developing ASP.NET Web applications.

7
Chapter 1 Web Application Development

1.3 .NET Framework


The .NET Framework is a Windows-based software development and execution
framework from Microsoft. This framework consists of two main parts—the Framework
Class Library (FCL) and the Common Language Runtime (CLR).
The Framework Class Library is a large library of classes. These classes perform many
of the functions needed to develop modern, state-of-the-art software applications, such
as Windows applications and Web applications. The classes in the FCL can be utilized
by any of the programming languages associated with the .NET Framework (e.g., Visual
Basic, Visual C++, Visual C#, Visual F#) and include user interface classes, file access
classes, database access classes, and network communication classes. By combining
our own custom programming code with the classes in the FCL, we can develop
sophisticated software applications relatively efficiently.
The Common Language Runtime is an environment in which all .NET applications
execute. These applications do not interact with the operating system directly like some
software applications do. Instead, regardless of the programming language used to
develop them, .NET applications are compiled into a Microsoft Intermediate Language
(MSIL) assembly and then executed by the CLR. Thus, it is the CLR that interacts with the
operating system, which then interacts with the computer’s hardware via device drivers.
An important aspect of the CLR is the Common Type System. The Common Type System
defines how all of the value types, reference types, and other types are declared, used,
and managed across all of the programming languages of the .NET Framework. Since
the CLR provides for its own security, memory management, and exception handling,
code running in the CLR is referred to as managed code. Figure 1-4 summarizes the
organization of the .NET Framework.

8
Chapter 1 Web Application Development

Figure 1-4. Organization of the .NET Framework

1.4 Object-Orientation Concepts


Object Orientation is a software development paradigm where virtually everything is
viewed in terms of classes (e.g., customers, Web pages, buttons on a Web page) and
objects (e.g., a specific customer, a specific Web page, a specific button on a Web page).
A class can contain properties (i.e., the data of the class) and methods (i.e., the
functionality of the class) and can handle events (i.e., end-user actions or other things
that occur in time). The properties, methods, and events of a class are referred to as its
members. A class encapsulates its properties, methods, and events by bundling them
together into a single unit and by hiding the details of those internals from other classes.
And finally, a class can inherit (i.e., take on and utilize) the properties, methods, and
events of other classes. We will learn more about these concepts next.

9
Chapter 1 Web Application Development

1.4.1 Classes and Objects


Classes are like “templates” that represent the characteristics and behaviors of things
we encounter in the real world. In our professional lives, we would likely encounter
things like customers, employees, products, and orders. On a Web page, we would
normally interact with things like buttons, checkboxes, calendars, and text boxes. When
developing software applications that involve such things, we typically design and/or
utilize classes that model their attributes and actions.
In the .NET Framework, there are two types of classes—non-static classes and static
classes. As a general rule, a non-static class contains non-static properties, non-static
methods, and non-static events that we can utilize, but only after an object has been
instantiated from the class.1 A static class, on the other hand, contains static properties,
static methods, and static events that we can utilize immediately, without having to
instantiate an object from the class.
When describing a class in this book, we will include a class diagram. Table 1-­1 shows
the general format of a class diagram. Such a diagram will always contain the name of the
class and the namespace in which it resides. A namespace contains classes that provide
specific functionality (e.g., page functionality, email functionality, database access
functionality) or specialized types (e.g., interface types, array types, value types, reference
types, enumeration types). A class diagram will also list some selected properties, methods,
and events of the class. The descriptions of these items will be taken directly from
Microsoft’s official documentation so that they can be trusted as authoritative. And finally,
a class diagram will provide a reference to Microsoft’s official documentation of the class.
To see all of a class’s properties, methods, and events, as well as see code samples of how
the class can be used, the interested reader can refer to this documentation.

1
A non-static class can also contain static properties, static methods, and static events that we can
utilize immediately, without having to instantiate an object from the class.

10
Random documents with unrelated
content Scribd suggests to you:
only partially appeased and they kept close to Wa-be-no-je until the
following evening. He knew that unless he could find some means of
shaking them off he would never see Taheta or his people again. He
decided to attempt to pick his way through the end of a wide marsh,
believing that his pursuers would not follow him into the water. If he
could get safely across, he would be able to elude them.

The swamp was full of quaking bogs, and near the middle the water
was quite deep. His progress was impeded by the soft mud and
decayed vegetation on the bottom, and the further he went the
chances became more desperate. One foot sank suddenly in the soft
ooze and then the other. He could neither retreat nor go ahead. He
had reached a mass of quicksand, and with every attempt to
extricate himself he sank a little lower. He clutched the ends of a few
sodden grasses and held them for some time, but the stagnant
murky waters slowly closed over him and he was gone.

The baffled wolves howled along the margins of the marsh for a
while but soon disappeared, like all enemies whose quarry has met
finality. The little fire on the horizon flared up brightly, as though
fresh sticks had been piled upon it, and gleamed through the
darkness brighter than ever before. It faded away in the gray of the
morning and its watcher followed the steep trail down the side of
Wud-ju-na-gow to rest.

Wa-be-no-je’s silent departure from the world left hardly a ripple in


the marsh. It is human to cherish the hope, or fondly believe, that
some store of gold, or grandeur of achievement—some sculptured
monument, or service to mankind—will stand at our place of exit and
be eloquent while the ages last, but the Waters of Oblivion hide well
their secrets. Beneath them are neither pride nor vanity. The
primordial slime from which we came reclaims without pomp or
jewelled vesture, and if there be a Great Beyond, poor Wa-be-no-je
may reach it from the quicksand as safely as he who becomes dust
within marble walls.
The early snows came and the nightly fires on Wud-ju-na-gow still
glowed. Only one guardian sat beside them, for Wa-be-no-je’s
people now believed that he would never return. Hope still abided in
Taheta’s loyal heart, and night after night she climbed the shelving
steeps and built her fire. One cold, stormy night she sat huddled in
her blanket and listened to the north wind. The snow swirled around
her and toward morning the light was gone. The next day they
found the rigid little form in the blanket and buried it below the
ashes of her fire.

Today the Fireweed, that ever haunts the burnt places, lifts its
slender stalk above the spot, and it may be that the soul of faithful
Taheta lurks among the tender pink blossoms—a halo that may be
seen from the dark waters of the distant marsh.
III
THE HERON’S POOL

THE HERON’S POOL (From the Author’s Etching)


III
THE HERON’S POOL

T HE pool was far back from the big marshes through which the
lazy current of the river wound. It was in one of those secluded
nooks that the seeping water finds for itself when it would hide in
secret retreats and form a little world of its own. It was bordered by
slushy grasses and small willows; its waters spread silently among
the bulrushes, lily pads and thick brush tangles. A few ghostly
sycamores and poplars protruded above the undergrowth, and the
intricate network of wild grape-vines concealed broken stumps that
were mantled with moss. The placid pool was seldom ruffled, for the
dense vegetation protected it from the winds. Wandering clouds
were mirrored in its limpid depths. Water-snakes made silvery trails
across it. Sinister shadows of hawks’ wings sometimes swept by, and
often the splash of a frog sent little rings out over the surface.
Opalescent dragon-flies hovered among the weeds and small turtles
basked in the sun-light along the margins.

The Voices of the Little Things were in this abode of tranquillity—the


gentle sounds that fill nature’s sanctuaries with soft music. There
were contented songs of feathered visitors, distant cries of crows
beyond the tree-tops, faint echoes of a cardinal, rejoicing in the
deep woods, and the drowsy hum of insects—the myriad little tribes
that sing in the unseen aisles of the grasses.

One spring a gray old heron winged his way slowly over the pool,
and, after a few uncertain turns over the trees, wearily settled
among the rushes. After stalking about in the labyrinth of weeds
along the shallow edges for some time, he took his station on a
dead branch that protruded from the water near the shore, and
solemnly contemplated his surroundings.

His plumage was tattered, and he bore the record of the years he
had spent on the marshy wastes along the river. His eye had lost its
lustre, and the delicate blue that had adorned the wings of his youth
had faded to a pale ashen gray. The tired pinions were slightly
frayed—the wings hung rather loosely in repose, and the lanky legs
carried scars and crusty gray scales that told of vicissitudes in the
battle for existence. He looked long and curiously at a round white
object on the bottom near his low perch. The round object had a
history, but its story did not come within the sphere of the heron’s
interests, and he returned to his meditations on the gnarled limb. He
may have dreamed of far-off shores and happy homes in distant
tree-tops. A memory of a mate that flew devotedly by his side, but
could not go all the way, may have abided with him. The peace of
windless waters brooded in this quiet haven. It was a refuge from
the storms and antagonisms of the outer world, its store of food was
abundant, and in it he was content to pass his remaining days.

When night came his still figure melted into the darkness. A fallen
luna moth, whose wet wings might faintly reflect the starlight, would
sometimes tempt him, and he would listen languidly to the lonely
cries of an owl that lived in one of the sycamores. The periodic visits
of coons and foxes, that prowled stealthily in the deep shadows, and
craftily searched the wet grasses for small prey, did not disturb him.
They well knew the power of the gray old warrior’s cruel bill. All his
dangerous enemies were far away. The will-o’-the-wisps that
spookily and fitfully hovered along the tops of the rushes, and the
erratic flights of the fire-flies, did not mar his serenity. He was
spending his old age in comfort and repose.

There is a certain air, or quality, about certain spots which is


indefinable. An elusive and intangible impression, an idea, or a story,
may become inseparably associated with a particular place. With a
recurrence of the thought, or the memory of the story there always
comes the involuntary mental picture of the physical environment
with which it is interwoven. This association of thought and place is
in most cases entirely individual, and is often a subtle sub-
consciousness—more of a relationship of the soul, than the mind, to
such an environment. Something in or near some particular spot that
imparts a peculiar and distinctive character to it, or inspires some
dominant thought or emotion, constitutes the “genius” of that place.
The Genius of the Place may be a legend, an unwritten romance, a
memory of some event, an imaginary apparition, an unaccountable
sound, the presence of certain flowers or odors, a deformed tree, a
strange inhabitant, or any thought or thing that would always bring
it to the mind.

When the heron came to the pool the Genius of the Place was old
Topago, a chief of the Pottawattomies. A great many years ago he
lived in a little hut, rudely built of logs and elm bark, on an open
space a few hundred feet from the pool. The fortunes of his tribe
had steadily declined, and their sun was setting. After the coming of
the white man, war and sickness had decimated his people. The wild
game began to disappear and hunger stalked among the little
villages. The old chief brooded constantly over the sorrows of his
race. As the years rolled on his melancholy deepened. He sought
isolation in the deep woods and built his lonely dwelling near the
pool to pass his last years in solitude. His was the anguish of heart
that comes when hope has fled. Occasionally one of the few faithful
followers who were left would come to the little cabin and leave
supplies of corn and dried meat, but beyond this he had no visitors.
His contact with his tribe had ceased.

One stormy night, when the north wind howled around the frail
abode, and the spirits of the cold were sighing in the trunks of the
big trees, the aged Indian sat over his small fire and held his
medicine bag in his shrivelled hands. Its potent charm had carried
him safely through many perils, and he now asked of it the
redemption of his people. That night the wind ceased and he felt the
presence of his good manitous in the darkness. They told him that
the magic of his medicine was still strong. If he would watch the
reflections in the pool, there would sometime appear among them
the form of a crescent moon that would foretell a great change in
the fortunes of his race, but he must see the reflection with his own
eyes.

In the spring, as soon as the ice had melted, he began his nightly
vigils at the foot of an ancient pine that overhung the water.
Through weary years he gazed with dimmed eyes upon the infinite
and inscrutable lights that gleamed and trembled in the pool. Many
times he saw the new moon shine in the twilights of the west, and
saw the old crescent near the horizon before the dawn, but no
crescent was ever reflected from the zenith into the still depths
below. Only the larger moons rode into the night skies above him.
His aching heart fought with despair and distrust of his tribal gods.
The wrinkles deepened on his wan face. The cold nights of spring
and fall bent the decrepit figure and whitened the withered locks.
Time dealt harshly with the faithful watcher, nobly guarding his
sacred trust.

One spring a few tattered shreds of a blanket clung to the rough


roots. Heavy snow masses around the pine had slipped into the pool
sometime during the winter, and carried with them a helpless
burden. The melting ice had let it into the sombre depths below. The
birds sang as before, the leaves came and went, and Mother Nature
continued her eternal rhythm.

During a March gale the ancient pine tottered and fell across the
open water. In the grim procession of the years it became sodden
and gradually settled into the oozy bottom. Only the gnarled and
decayed branch—the perch of the old heron—remained above the
surface.

One night in early fall, when there was a tinge of frost in the air, and
the messages of the dying year were fluttering down to the water
from the overhanging trees, the full moon shone resplendent directly
above the pool. The old heron turned his tapering head up toward it
for a moment, plumed his straggling feathers for a while,
nonchalantly gazed at the white skull that caught the moon’s light
below the water near his perch, and relapsed into immobility. A rim
of darkness crept over the edge of the moon, and the earth’s
shadow began to steal slowly across the silver disk. The soft beams
that glowed on the trees and grasses became dimmed and they
retreated into the shadows. The darkened orb was almost eclipsed.
Only a portion of it was left, but far down in the chill mystery of the
depths of the pool, among countless stars, was reflected a crescent
moon.

The magic of Topago’s medicine was still potent. The hour for the
redemption of the red man had come, but he was no more. The
mantle of the Genius of the Place had fallen upon the old heron. He
was the keeper of the secret of his pool.
IV
THE STORY OF THE STREAM

“Omemee”
IV
THE STORY OF THE STREAM

T HE bistre-colored waters of French Creek seep sluggishly out of


the ancient peat beds far away in the country back of the dunes.
Countless tiny rivulets of transparent golden brown creep through
the low land among the underbrush and mingle with the gentle
current that whispers in the deep grasses, ripples against decayed
branches and fallen trunks, hides under masses of gnarled roots and
projecting banks, and enters the long sinuous ravine that winds
through the woods and sand-hills. The ravine ends abruptly at the
broad shore of the lake. The stream spreads out over the beach and
tints the incoming surf with wondrous hues.

In the daytime occasional gleams of light from the gliding water can
be seen through the small openings in the labyrinths of undergrowth
and between the tall tree trunks that crowd the shadowy defile. At
night there are tremulous reflections of the moon among the thick
foliage. Strange ghostly beams touch the boles of the solemn pines
and sycamores and filter into the sombre recesses.

The dramas of human life leave romance behind them. Its halo
hovers over these darkened woods, for it was here that the beautiful
Indian girl, Omemee, was brought by her dusky Pottawattomie lover,
in the moon of falling leaves, and it was here that the threads of
their fate were woven nearly a hundred years ago.

Red Owl first saw her among the wild blackberry bushes near the
village of her people. She had responded to his entreaties with shy
glances, and after many visits and much negotiation, her father, a
wrinkled old chief, had consented to their union. Omemee’s savage
charms had brought many suitors to her father’s wigwam. Her
graceful willowy figure, long raven hair, musical voice, dark luminous
eyes and gentle ways had made her a favorite of her village. She
was called the dove in the language of her tribe. There was sorrow
when she went away.

Red Owl’s prowess as a hunter, his skill in the rude athletic sports of
the village, displayed on his frequent visits during the wooing, had
won the admiration of the old warrior. Among the many bundles of
valuable pelts that were borne along the Great Sauk Trail to the
traders’ posts, the largest were usually those of Red Owl. The fire-
water of the white man did not lure him to disaster as it did many of
his red brothers. He always transacted his business quickly and
returned from the posts with the ammunition, traps and other
supplies for which he had exchanged his furs.

For a year he quietly accumulated a secret hoard of selected skins,


which he laid before the door of the fond father as the marriage
offering. The lovers disappeared on the trail that was to lead them to
their home. For five days they travelled through the dunes and
primeval forests. They came down the trail that crossed French
Creek, climbed out of the ravine, and entered the village of Red
Owl’s people. The wigwams were scattered along the stretch of
higher ground among the trees. Omemee was cordially welcomed
and soon grew accustomed to her new environment.

For many years the young men of the tribe had trapped muskrats,
beaver and mink along the creek and in the swamps beyond its
headwaters. Small furred animals were abundant for many miles
around, and, during the fur season, the trappers were dispersed
over a wide extent of territory.

When “Peg Leg” Carr came into the dune country the only human
trails he found were those of the red men. He came alone and built
a cabin on the creek not far from the Indian Village. Peg Leg may
have still cherished a secret longing for human society which he was
not willing to admit, even to himself. He had abandoned his last
habitat for the ostensible reason that “thar was too many people
’round.” He came from about a hundred miles back on the Sauk Trail.
After a family disagreement he had left his wife and two sons to
their own devices in the wilderness, and was not heard of for nearly
ten years. He suddenly appeared one morning, stumping along the
trail, with his left knee fitted to the top of a hickory support. The
lower part of the leg was gone, and he explained its absence by
declaring that it had been “bit off.” The time-worn pleasantry
seemed to amuse him, and no amount of coaxing would elicit further
details. There was a deep ugly scar in the left side of his neck. His
vocal chords had been injured and he could talk only in hoarse
whispers. He said that his throat had been “gouged out.” Somebody
or something had nearly wrecked Peg Leg physically, but the story,
whatever it was, remained locked in his bosom. He admitted that he
had “been to sea,” but beyond that no facts were obtainable.

After a brief sojourn at his old home he shouldered his pack and
started west. When he arrived at French Creek he spent several days
in looking the country over before deciding on the location of his
cabin. He was a good-natured old fellow and the Indians did not
particularly resent his intrusion, even when he began to set a line of
traps along the creek. The small animals were so numerous that one
trapper more or less made little difference, and he got on very well
with his red neighbors. They rather pitied his infirmities and were
disposed to make allowances. He was over seventy and apparently
harmless.

When the old man had accumulated a small stock of pelts it was his
custom to carry them to a trading post located about forty miles
back on the trail and exchange them for supplies for his simple
housekeeping and other necessities. These trips often consumed ten
days, as his loads were heavy and he was compelled to travel slowly.
On his return, when he came to the rude log bridge over which the
trail crossed the creek in the ravine, he would sometimes wearily lay
his pack down and pound on the timbers with his hickory stump as a
signal to those above. He was unable to reach them with his
impaired voice. Somebody in the wigwams usually heard him and
came down to help the exhausted old trapper carry his burden up
the steep incline. After resting awhile he would trudge on to his
cabin.

A few years after the advent of Peg Leg a troop of soldiers arrived
and built a fort. For strategic reasons the commander of the
government post at Detroit decided to keep a small garrison at the
end of the lake. A spot was cleared on the bluff and two small brass
cannon were mounted in the block-house inside the log stockade.
The tops of the surrounding trees were cut away so that the guns
would command the trail from where it entered the north side of the
ravine to the point at which it disappeared around a low hill south of
the fort.

The French Creek Trail was a branch of the Great Sauk Trail, which
was the main thoroughfare from the Detroit post to the mouth of
Chicago river. It was joined near the headwaters of the St. Joseph
and Kankakee rivers, in what is now northeastern Indiana, by
another trail that followed the north banks of the Kankakee from the
Illinois country. The sinuous routes had been used from time
immemorable. They were the established highways of the red men
and the arteries of their simple commerce. Thousands of moccasined
feet traversed them on peaceful errands, and grim war parties
sometimes moved swiftly along the numberless forest paths that
connected with the main trails. There was a net-work of these all
through the Indian country. Trees twisted and bent in a peculiar way,
which we now often see in the woods, were landmarks left by the
makers of various small trails that were travelled infrequently.

Soon after the fort was built at French Creek, Pierre Chenault came
and established a trading post near the village. He was followed by a
number of settlers who built log houses along the edge of the bluff.
The red man’s fatherland was invaded. The civilization of the white
man—or the lack of it—had come, with its attending evils of strong
waters and organized rapacity. The waves of an alien race, with
strange tongues and new weapons of steel, had broken over him.
His means of subsistence dwindled. His heritage was passing to the
sway of the despoiler.

The Indians loitered around Pierre Chenault’s trading post, bartered


their few valuables for fire-water, and neglected the pursuits that
had made them happy and prosperous. Chenault was a half-breed.
His father belonged to that hardy race of French-Canadian
voyageurs who had broken the paths of the wilderness in the north
country, and penetrated the fastnesses of the territory of the Great
Lakes and the Mississippi. His mother was an Ojibwa on the south
shore of Lake Superior. He was about forty, with a lean and
hardened frame. His straight black hair was beginning to be streaked
with gray, and fell to his shoulders. Piercing eyes looked out from
under the heavy brows with an expression of low cunning, and his
face carried the stamp of villainy. He was a mongrel, and in his case
the mixture was a failure. He inherited the evil traits of both races
and none of the virtues of either.

The creek was now practically abandoned as a trapping ground by


the Indians. With the exception of Red Owl and Peg Leg, who
divided the few miles of the stream, the trappers had sought other
regions that were less disturbed. The dwellers in the wigwams
contemplated a general removal to a more congenial habitat. Their
neighbors were getting too numerous for comfort, and their ways of
life were meeting with too much interference. They did not object to
Peg Leg, but he was all of their white brothers that they felt they
needed.

As the fur grew scarcer Red Owl rather resented the rivalry of the
old man’s interests, and occasionally appropriated an otter or mink,
when he passed Peg Leg’s traps, and had found nothing in his own.
He probably lulled his conscience with the idea that the animals
naturally belonged to the Indians, and that Peg Leg’s privileges were
a form of charity that need not be extended to the point of his own
self-denial.

Many times the half-breed had looked longingly on the quiet-eyed


Omemee when she came to his post. He coveted Red Owl’s savage
jewel. Wickedness fermented in his depraved mind, but he was too
wise to make advances. He knew of Red Owl’s surreptitious visits to
Peg Leg’s traps and laid his plans with far-seeing craft. One still
February morning he saw him go into the ravine and start up the
creek on the ice. He seized his rifle and crept through the thick
timber and undergrowth, away from the creek, paralleling the course
taken by the unsuspecting Indian. After going a mile or so Red Owl
stopped near the projecting roots of a large elm. One of Peg Leg’s
traps was there and his rival was soon engaged in killing and
extracting a mink from the steel jaws of the trap. The half-breed
stole up to within a hundred yards. A report rang in the crisp air and
a bullet crashed into the back of the Indian’s head. The murderer
left no trail near the frozen creek. He made a wide detour, returned
to his post, after hiding his rifle in the snow, and awaited results.

A couple of hours later Peg Leg hobbled along the white water
course to inspect his traps. He followed Red Owl’s trail and came
upon the still form lying in the blood-stained snow on the ice. He
speculated for some time over the mystery and went to the
settlement to report what he had found.

The broken-hearted Omemee went with those who departed for the
scene of the tragedy. No trail was visible except those of Red Owl
and Peg Leg. The old man’s tracks were easily recognized. His denial
of any guilty knowledge of the killing was met by silence and dark
looks. Circumstantial evidence was against him. The motive was
obvious and the story was on the snow. The partial justice of the
retribution that had mysteriously fallen upon the thief did not lessen
the innocent old trapper’s sorrow and fear, for he knew that justice,
age, or infirmity would be no bar to Indian revenge. He would never
have killed Red Owl for interfering with his traps. A high wind and a
snow storm came up in the afternoon that effectually baffled any
further investigation. The despondent old man kept the seclusion of
his cabin and brooded over his trouble for several weeks.

Red Owl was laid away after the customs of his people. Omemee
departed into the wilderness to mourn for her dead. After many days
she returned with the light in her eyes that gleams from those of the
she-panther when her young have been killed before her—a light
that an enemy sees but once.

In the spring Peg Leg left with his pack of winter pelts. He had once
been cheated by Chenault and preferred to do his trading where he
had gone before the half-breed came. His journey consumed nearly
two weeks. One evening at dusk he laboriously picked his way down
the steep path into the ravine, laid his load of supplies on the rude
bridge, and then signalled for help by pounding the bridge timbers
with his hickory stump. He was worn out and could not carry his
burden up the steep incline alone.

Like a snake from its covert, a beautiful wild thing darted from the
deep shadows of the pines. The moccasined feet made no sound on
the logs. There was a gleam of steel, a lightning-like movement, and
Omemee glided on out of the ravine into the gathering gloom. The
silence was broken by a heavy splash below the side of the bridge,
and when they found poor old Peg Leg the hilt of a knife protruded
from between his shoulders.

There was a hidden observer of the tragedy. Pierre Chenault had


watched long and anxiously for the stroke of Omemee’s revenge.
The white man’s law now gave him a coveted advantage. He broke
cover and pursued the fast retreating figure. He would offer to
conduct her to a place of safety, protect her and declare his love.

Omemee ran with the speed of a deer in the direction of the home
of her childhood. She fled out over the dunes to the shore of the
lake. For miles along the wild wave-washed coast the two dim
figures sped in the darkness. Omemee finally dropped from
exhaustion. The half-breed carried her in his arms to the foot of the
bluff where he built a small fire behind a mass of drift-wood, and sat
beside her until the gray of the morning came over the sand-hills.
They were now about twelve miles from the settlement. They
walked along the beach together for several hours and turned into
the dunes.

After the April rains tender leaves unfolded in the trees around the
bark wigwam where Omemee was born. The old chief had died two
years before, but a faint wreath of smoke ascended softly to the
overhanging branches. Fastened above the door was a grisly and
uncanny thing that moved fitfully to and fro when the winds blew
from the lake. It was the scalp of Pierre Chenault.

With the failure to obtain a government appropriation for a harbor at


City West, the name of the new settlement, the embryo town
vanished utterly and became a dream of the past. Its ambitions and
crushed hopes are entombed in obscure history. No vestiges of its
buildings remain. There are traces of a crude mill race near the place
where the now obliterated trail crossed the creek. Around the site of
the old fort the trees, whose tops were cut away to clear the range
for the six-pounders, have covered their wounds with new limbs that
have grown from the mutilated trunks.

Near the roots of a gnarled oak at a bend in the stream Peg Leg’s
dust has mingled with the black loam, where his spirit may be lulled
by the passing waters. When we seem to hear the tapping of the
woodpecker on a hidden hollow tree in the depths of the dark
ravine, it may be the echoes through the mists of the years of the
strokes of the poor old trapper on the timbers of the bridge.

The red man has gone. The currents of human passion that rose and
fell along the banks of the little stream have passed into silence. The
bistre-colored waters still flow out on the wide expanse of sand and
spread their web of romance in the moon-light.
V
THE MOON IN THE MARSH

THE MOON IN THE MARSH (From the Author’s Etching)


V
THE MOON IN THE MARSH

T HERE is a hazy mist on the horizon where the red rim of the
October sun left the sky-line. The twilight of Indian Summer is
stealing over the marsh. There is a hush of vibrant voices and a
muffled movement of tiny life in the darkened places. Sorrow rests
upon the world, for the time of the requiem of the leaves has come.
The red arrows are abroad; a flush of crimson is creeping through
the forest. An elusive fragrance of fruition is in the air, and a drowsy
languor droops the stems and branches.

Royal robes rustle faintly on the hills and in the shadows of the
woods. From among the living trees a mighty presence has
vanished. A queen who came in green has departed as a nun in
gray, and the color fairies have entered the bereaved realm with
offerings of red and gold.

A vague unrest troubles the trembling aspens and the little sassafras
trees that flock like timid children beyond the sturdy sycamores. The
gnarled oaks mutely await the winds of winter on their castanets of
cold dead leaves—music of our Mother Earth to which we all must
listen until our slumber hour comes.

Through darkening masses of tangled thickets, and over bogs


concealed by matted grasses, some soggy and decayed logs,
covered with moss and slime, lead out over the wet margin of the
tarn to the edge of the clear water. A startled bittern rises clumsily
out of the rushes. A pair of wild ducks tower out and glide away over
the tree-tops. There are stifled rustlings in the ferns and sedges, and
little wings are fluttering furtively among unseen branches. There is
a soft splash near the edge of the woods. From out the shadow the
curling wake of a muskrat stretches across an open space. A mottled
water-snake drops stealthily into a wet labyrinth—the muffled
movements cease—and muted echoes of vesper choirs sweeten the
solitude that broods over the tarn.

After a period of silence another whir of pinions overhead heralds


the return of the ducks. They circle swiftly and invisibly in the deep
shadows—their silhouettes dart across the sky openings, and, with a
loud swish, they strike the water and settle comfortably for the night
behind some weedy bogs close to the opposite shore.

In the gathering gloom tiny beams creep into the depths of the
water. One by one the starry host begins to twinkle in the inverted
canopy of the heavens. The full-orbed silver moon rides into the sky
through the delicate lacery of the trees with a flood of soft light.
Another disk sinks majestically into the abyss.

The asterisms of the astronomer are in the firmament above, rolling


in mighty cycles to the ordered destinies of the spheres, but the
stars of Arcady are in the quiet pools, the placid bosoms of gently
flowing rivers, and far out in seas that are beyond our ken. They
sparkle in the smooth curves of heavy swells on distant deeps, and
shine far below coral worlds in ocean depths. These stars are
measureless. They gleam in awful profundities and illumine a world
of dreams. We may look down to them from the windows of a fair
castle in which a noble spirit dwells, but beyond its walls we may not
go. There are travellers in that dimly lighted vault, for dark wings
blur the points of pallid radiance in swift and silent flight. Eternity is
not there, for its constellations will tremble and vanish with a
passing zephyr on the surface of the pool.

A white web of mist gathers on the water. A phosphorescent trunk in


the distance glows with ghostly light. The fluffy movement of the
wings of a small owl is visible against a patch of sky, and a moment
later the dusky form whisks by in the gloom. Agile bats wheel and
plunge noiselessly in pursuit of invisible prey. A few bulrushes in a
near-by clump are slightly disturbed. The night life has begun to
move in the slough, for it is nature’s law that it must kill to live.

The veil of mist thickens—the stars in the depths disappear—the


moon’s reflection becomes a nebula of pale effulgence, and is finally
lost in vaporous obscurity. Like the soft fabric of forgetfulness that
time weaves over sorrow, the mist envelopes the tarn. Like wraiths
of dead years, filmy wreaths trail tenderly and delicately through the
solemn woods. The purple darkness has become gray. A clammy
wetness clings to the tall grasses. Beads of crystal on their bending
points mirror feeble beams of light, and the heaviness of humidity is
upon the boughs and fallen leaves.

The moods of Nature are manifold in expression and power. In her


infinite alchemy she reflects a different ray into every facet of the
human soul. She echoes its exaltation, has sweet unguents for its
weariness, and leads it upon lofty paths of promise when hope has
died. The music of her strings brings forth hidden melodies, and it is
with her that we must go if we would reach the heights.

The dark morass becomes a dreamland. Through it stately legions


go. Ethereal aisles wind through the trees. Cloudy walls rise along its
borders, and beyond them are kingdoms in elf-land where fancy may
spin fabrics of gossamer and build mansions remote from earthly
being.

There is a life of the soul as well as of the body. We may ponder as


to its immortality, but undeniably it is in the present, if not in a state
to come. Hope grasps at a shadowy vision of the future that
dissolves at our touch. Reason gives only the substance of the
present, elusive though it be. We live in a world of illusion, where
seeming realities may be but phantoms. We wander in a maze of
speculative thought. The paths are intricate and only lead to narrow
cells. The Forest Gods that dwell in the high and hidden places
speak a language that is without words. The fallen leaf is as
eloquent as established dogma or voice of hoary seer. In our own
hearts must we find our shrines, for the obscurity beyond the
borderland of philosophy is as deep as the mould below the leaves.
The multitudes that have come upon the earth and vanished have
left no clue.

The key lies at the bottom of the tarn, and the story is in the marsh.
VI
HOLY ZEKE

“Holy Zeke”
VI
HOLY ZEKE
“And mine eye shall not spare, neither will I have pity; I will
recompense thee according to thy ways and thine abominations
that are in the midst of thee; and ye shall know that I am the
Lord that smiteth.”—Ezekiel 7:9

A FTER an industrious day with my sketch book among the dunes,


I walked over to the lake shore and looked up the beach toward
Sipes’s shanty. In the gathering twilight a faint gleam came through
the small window. Not having seen my old friend for nearly a year, I
decided to pay him a visit. My acquaintance with him had brought
me many happy hours as I listened to his reminiscences, some of
which are recorded in former stories.

He had been a salt water sailor, and, with his shipmate Bill Saunders,
had met with many thrilling adventures. He had finally drifted to the
sand-hills, where he had found a quiet refuge after a stormy life.
Fishing and hunting small game yielded him a scanty but
comparatively happy livelihood. He was a queer, bewhiskered little
man, somewhere in the seventies, with many idiosyncrasies, a fund
of unconscious humor, much profanity, a great deal of homely
philosophy, and with many ideas that were peculiarly his own.

He wore what he called a “hatch” over the place which his right eye
formerly occupied, and explained the absence of the eye by telling
me that it had been blown out in a gale somewhere off the coast of
Japan. He said that “it was glass anyway” and he “never thought
much of it.” Saunders figured more or less in all of his stories of the
sea.

On approaching the nondescript driftwood structure, I heard a


stentorian voice, the tones of which the little shanty was too frail to
confine, and which seemed to be pitched for the solemn pines that
fringed the brink of the dark ravine beyond.

“Now all ye hell-destined sinners that are in this holy edifice, listen
to me! Ye who are steeped in sin shall frizzle in the fires o’
damnation. The seethin’ cauldrons yawn. Ye have deserved the fiery
pit an’ yer already sentenced to it. Hell is gaping fer this whole
outfit. The flames gather an’ flash. The fury o’ the wrath to come is
almost ’ere. Yer souls are damned an’ you may all be in hell ’fore
tomorrer mornin’. The red clouds o’ comin’ vengeance are over yer
miserable heads. You’ll be enveloped in fiery floods fer all eternity—
fer millions of ages will ye sizzle. Ye hang by a slender thread. The
flames may singe it any minute an’ in ye go. Ye have reason to
wonder that yer not already in hell! Yer accursed bodies shall be laid
on live coals, an’ with red-hot pitch-forks shall ye be sorted into
writhin’ piles an’ hurled into bottomless pits of endless torment. I’m
the scourge o’ the Almighty. I’m Ezekiel-seven-nine. This is yer last
chance to quit, an’ you’ve got to git in line, an’ do it quick if ye want
to keep from bein’ soused in torrents o’ burnin’ brimstone, an’ have
melted metal poured into yer blasphemous throats!”

At this point the door partially opened and a furtive figure slipped
out. “Let all them that has hard hearts an’ soft heads git out!” roared
the voice. The figure moved swiftly toward me and I recognized
Sipes.

“Gosh! Is that you? You keep away from that place,” he sputtered,
as he came up.

“What seems to be the trouble?” I asked.


“It’s Holy Zeke an’ he’s cussin’ the bunch. It looks like we’d all have a
gloomy finish. He was up ’ere this mornin’ an’ ast me if ’e could ’ave
a reevival in my place tonight. He’s ’ad pretty much ev’rythin’ else
that was loose ’round ’ere, an’ like a damn fool I told ’im O. K., an’
this is wot I git. I thought it was sump’n else. You c’n go an’ listen to
’is roar if you want to, but I got some business to ’tend to ’bout ten
miles from ’ere, an’ I wont be back ’till tomorrer, an’ w’en I come
back it’ll be by water. I’m goin’ to lay fer that ol’ skeet with my
scatter gun, an’ he’ll think he’s got hot cinders under ’is skin w’en I
git to ’im. I’ll give ’im all the hell I can without murderin’ ’im.” Sipes
then disappeared into the gloom, muttering to himself.

His “scatter gun” was a sinister weapon. It had once been a smooth-
bore army musket. The barrel had been sawed off to within a foot of
the breach. It was kept loaded with about six ounces of black
powder, and, wadded on top of this, was a handful of pellets which
the old man had made of flour dough, mixed with red pepper, and
hardened in the sun. He claimed that, at three rods, such a charge
would go just under the skin. “It wouldn’t kill nothin’, but it ’ud be
hot stuff.”

I sat on a pile of driftwood for some time and waited for the turmoil
in the shanty to subside. Finally the door opened and four more
figures emerged. I was glad to recognize my old friend “Happy Cal,”
whom I had not seen since his mysterious departure from the sand-
hills several years ago, after his dispute with Sipes over some
tangled set-lines. Evidently the two old derelicts had amicably
adjusted their differences, and Cal had rejoined the widely scattered
colony. Another old acquaintance, “Catfish John,” was also in the
party. After greetings were exchanged, John introduced me to a
short stocky man with gray whiskers.

“Shake hands with Bill Saunders,” said he.

This I did with pleasure, as Sipes’s yarns of the many exploits of this
supposedly mythical individual invested him with much interest.
“This ’ere’s Ezekiel-seven-nine,” continued John, indicating the
remaining member of the quartette.

I offered “Ezekiel-seven-nine” my hand, but it was ignored. He


looked at me sternly. “Yer smokin’ a vile an’ filthy weed,” said he. “It
defiles yer soul an’ yer body. It’s an abomination in the sight o’ the
Lord. Yer unclean to my touch.” With that he turned away.

I glanced at his hands and if anything could be “unclean” to them its


condition must be quite serious. I quite agreed with him, but from a
different standpoint, that the cigar was “an abomination,” and, after
a few more doubtful whiffs, I threw it away, as I had been tempted
to do several times after lighting it. Its purchase had proved an error
of judgment.

Zeke’s impressions of me were evidently not very favorable. He


walked away a short distance and stopped. In the dim light I could
see that he was regarding us with disapproval. He took no part in
the conversation. He finally seated himself on the sand and gazed
moodily toward the lake for some time, probably reflecting upon the
unutterable depravity of his present associates, and calculating their
proximity to eternal fire.

“Holy Zeke,” as Sipes had called him, was about six feet two. His
clothes indicated that they had been worn uninterruptedly for a long
time. The mass of bushy red whiskers would have offered a
tempting refuge for wild mice, and from under his shaggy brows the
piercing eyes glowed with fanatic light.

Calvinism had placed its dark and heavy seal upon his soul, and the
image of an angry and pitiless Creator enthralled his mind—a God
who paves infernal regions with tender infants who neglect theology,
who marks the fall of a sparrow, but sends war, pestilence and
famine to annihilate the meek and pure in heart.

The wonderful drama of the creation, and the beautiful story of


Omnipotent love carried no message for him. Lakes of brimstone
and fire awaited all of earth’s blindly groping children who failed to
find the creed of the self-elect. Notwithstanding the fact that the
national governing board of an orthodox church, with plenary
powers, convened a few years ago, officially abolished infant
damnation, and exonerated and redeemed all infants, who up to that
time had been subjected to the fury of Divine wrath, Zeke’s doctrine
was unaltered. It glowed with undiminished fervor. He was a restless
exponent of a vicious and cruel man-made dogma, which was as evil
as the punishments it prescribed, and as futile as the rewards it
promised.

To me Holy Zeke was an incarnation. His eyes and whiskers bespoke


the flames of his theology, and his personality was suggestive of its
place in modern thought. His battered plug hat was also Calvinistic.
It looked like hades. It was indescribable. One edge of the rim had
been scorched, and a rent in the side of the crown suggested the
possibility of the escape of volcanic thought in that direction. Like his
theology, he had picturesque quality.

If he had been a Mohammedan, his eyes would have had the same
gleam, and he would have called the faithful to prayer from a
minaret with the same fierce fervor as that with which he conjured
up the eternal fires in Sipes’s shanty. Had not Calvinism obsessed
him, his type of mind might have made him a murderous criminal
and outlaw, who, with submarines and poison gas, would deny
mercy to mankind, for there was no quality of mercy in those cruel
orbs. They were the baleful eyes of the jungle, that coldly regard the
chances of the kill. In Holy Zeke’s case the kill was the forcible
snatching of the quarry from hell, not that he desired its salvation,
but was anxious to deprive the devil of it. He had no idea of pointing
a way to righteousness. There was no spiritual interest in the
individual to be rescued. He was the devil’s implacable enemy, and it
was purely a matter of successful attack upon the property of his
foe. Predestination or preordination did not bother him. He made no
distinctions. There was no escape for any human being whose belief
differed from his; even the slightest variation from his infallible creed
meant the bottomless pit.

Zeke had one redeeming quality. He was not a mercenary. No board


of trustees paid him the wages of hypocrisy. He did not arch his
brows and fingers and deliver carefully prepared eloquent addresses
to the Creator, designed more for the ears of his listeners than for
the throne above. He did not beseech the Almighty for private
favors, or for money to pay a church debt. He regarded himself as a
messenger of wrath, and considered that he was authorized to go
forth and smite and curse anything and everything within his radius
of action. This radius was restricted to the old derelicts who lived in
the little driftwood shanties along the beach and among the sand-
hills. There were but few of them, but the limited scope of Zeke’s
labors enabled him to concentrate his power instead of diffusing and
losing it in larger fields.

Zeke soon left our little party and followed a path up into the ravine.
After his departure we built a fire of driftwood, sat around it on the
sand, and discussed the “scourge.”

“I hate to see anythin’ that looks like a fire, after wot we’ve been up
ag’inst tonight,” remarked Cal, as he threw on some more sticks,
“but as ’e ain’t ’ere to chuck us in, I guess we’ll be safe if we don’t
put on too much wood. Where d’ye s’pose ’e gits all that dope? I had
a Bible once’t, but I didn’t see nothin’ like that in it. There was a
place in it where some fellers got throwed in a fiery furnace an’
nothin’ happened to ’em at all, an’ there was another place where it
said that the wicked ’ud have their part in hell fire, but I didn’t read
all o’ the book an’ mebbe there’s a lot o’ hot stuff in it I missed.
W’en did you fust see that ol’ cuss, John?”

Catfish John contemplated the fire for a while, shifted his quid of
“natural leaf,” and relighted his pipe. He always said that he
“couldn’t git no enjoyment out o’ tobacco without usin’ it both ways.”
“He come ’long by my place one day ’bout three years ago,” said the
old man. “It was Sunday an’ ’e stopped an’ read some verses out of
’is Bible while I was workin’ on my boat. He said the Lord rested on
the seventh day, an’ I’d go to hell if I didn’t stop work on the
Sabbath. I told ’im that my boat would go to hell if I didn’t fix it, an’
they wasn’t no other day to do it. Then ’e gave me wot ’e called
‘tracks’ fer me to read an’ went on. The Almighty’s got some funny
fellers workin’ fer ’im. This one’s got hell on the brain an’ ’e ought to
stay out in the lake where it’s cool. Ev’ry little while ’e comes ’round
an’ talks ’bout loaves an’ fishes, an’ sometimes I give ’im a fish, w’en
I have a lot of ’em. He does the loaf part ’imself, fer sometimes ’e
sticks ’round fer an hour or two. Then ’e tells me some more ’bout
hell an’ goes off some’r’s, prob’ly to cook ’is fish.”

“Sipes must ’a’ come back. Let’s go over there,” suggested Saunders,
as he called our attention to the glimmer of a light in the shanty.

As we approached the place the light was extinguished, and a voice


called out, “Who’s there?”

After the identity of the party had been established, and the
assurance given that Holy Zeke was not in it, the light reappeared
and we were hospitably received.

“Wot did you fellers do with that hell-fire cuss?” demanded Sipes
when we were all seated in the shanty. “Look wot’s ’ere!” and he
picked up a small, greasy hymn book which the orator had forgotten
in the excitement. Sipes handed me the book. I opened it at random
and read:

“Not all the blood of beasts, on Jewish altars slain,


Can give the guilty conscience peace, or wash away the stain.”

“Gimme that!” yelled Sipes, and I heard the little volume strike the
sand somewhere out in the dark near the water. “Wot d’ye s’pose I
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like