第一部分
第1章 体验软件开发新思维
1.1 从一个实例开始
1.2 数据库表结构设计
1.3 采用传统软件开发模式构建
1.3.1 构建数据源
1.3.2 构建程序界面
1.3.3 修改绑定源
1.3.4 修改SQL语句和数据集
1.3.5 编写程序
1.3.6 体验开发成果
1.4 采用软件开发新模式构建
1.4.1 构建数据集
1.4.2 体验XML组件即插即用
1.4.3 建立SQL的绑定
1.4.4 建立数据的绑定
1.4.5 事件挂接处理
1.4.6 体验新模式成果
1.5 软件开发新模式的优势
1.6 小结
第2章 XML组件即插即用的机理
2.1 概述
2.2 .NET组件
2.2.1 什么是组件
2.2.2 属性
2.2.3 事件
2.2.4 数据绑定
2.3 XML组件即插即用
2.3.1 什么是XML组件
2.3.2 组件属性的XML表示
2.3.3 组件事件的XML表示
2.3.4 如何实现即插即用
2.4 组件标签定义文件
2.5 表达式文法
2.6 属性处理机制
2.6.1 属性基本值
2.6.2 属性默认值
2.6.3 动态属性值
2.7 事件处理机制
2.7.1 签名事件处理
2.7.2 非签名事件处理
2.8 数据模型
2.8.1 数据集和数据存取定义
2.8.2 数据绑定模型和XML表示
2.9 数据模型
2.9.1 数据存取机制
2.9.2 解析表达式和Where绑定
2.10 加载Form.dll
2.11 小结
第3章 构建 .NET窗体设计器最佳实践
3.1 .NET设计时概述
3.1.1 服务和容器
3.1.2 设计器宿主
3.1.3 设计器图面
3.1.4 设计器加载器
3.2 构建设计器图面
3.3 设计器宿主编程
3.4 设计器加载器设计
3.4.1 读取XML文件
3.4.2 写XML文件
3.5 设计时服务设计最佳实践
3.5.1 选择服务处理
3.5.2 组件改变服务处理
3.5.3 命名创建服务处理
3.5.4 菜单命令服务处理
3.5.5 工具箱服务处理
3.5.6 事件绑定服务处理
3.5.7 属性窗口服务处理
3.6 Undo引擎控制最佳实践
3.7 设计器复制/粘贴编程实践
3.8 设计器快捷键设计
3.9 源代码生成最佳实践
3.9.1 代码对象模型
3.9.2 数据集源代码生成
3.9.3 数据表和数据列源代码生成
3.9.4 SQL源代码生成
3.9.5 属性默认值和动态属性值的代码生成
3.9.6 快捷键源代码生成
3.9.7 事件源代码生成
3.9.8 数据绑定源代码生成
3.10 编译源代码最佳实践
3.11 小结
第4章 打印报表设计器基础
4.1 概述
4.2 打印设计元素
4.2.1 标签元素
4.2.2 检查框元素
4.2.3 线段元素
4.2.4 矩形元素
4.2.5 图形元素
4.2.6 网络元素
4.3 数据绑定
4.3.1 标签元素和检查框元素的数据绑定
4.3.2 网格元素的数据绑定
4.4 设计元素内存结构
4.4.1 打印标签描述文件
4.4.2 打印设计元素标签结构
4.5 小结
第5章 打印报表设计器最佳实践
5.1 图形系统概述
5.2 系统初始化
5.3 读/写XML
5.3.1 基本属性格式
5.3.2 图形格式
5.3.3 数据绑定格式
5.4 属性
5.4.1 属性默认值
5.4.2 动态属性
5.5 打印方式
5.5.1 分页打印
5.5.2 卡片式打印
5.5.3 客户自定义打印 0
5.6 打印标记类
5.7 转换标签并输出到打印机
5.7.1 标签元素的转换
5.7.2 检查框元素的转换
5.7.3 线段元素的转换
5.7.4 矩形元素的转换
5.7.5 图形元素的转换
5.7.6 网络元素的转换
5.8 页面设置
5.9 打印设置
5.10 打印方法调用
5.11 小结
第二部分
第6章 新思维之商务管理系统体系结构
6.1 商务管理系统的设计目标
6.2 商务管理系统的组成
6.3 客户端应用程序的基本概念
6.4 商务管理系统架构
6.5 服务程序
6.6 服务器程序
6.6.1 服务器程序启动流程
6.6.2 服务器配置
6.7 客户端程序
6.7.1 客户端程序启动流程
6.7.2 心跳信号
6.7.3 客户端配置
6.7.4 程序模块
6.8 小结
第7章 像搭积木一样搭建软件最佳实践
7.1 商务管理系统主界面
7.2 构建档案
7.2.1 建立数据集
7.2.2 设计档案窗体
7.2.3 运行客户档案
7.2.4 设计档案打印报表
7.3 构建查询
7.3.1 建立数据集
7.3.2 设计查询
7.3.3 设计查询打印报表
7.4 小结
第8章 新思维下的数据存取
8.1 数据存取机制概述
8.2 数据存取代理
8.3 DataAccess类
8.4 User类
8.5 小结
第9章 数据转换与生成最佳实践
9.1 概述
9.2 转换与生成源和目的
9.3 转换控制
9.4 小结
第10章 远程数据交换最佳实践
10.1 远程数据交换原理
10.2 数据导出实践
10.3 数据导入实践
10.4 小结
第11章 数据备份与恢复
11.1 数据的备份与恢复概述
11.1.1 连接
11.1.2 默认的Windows认证连接
11.1.3 SQL Server登录
11.1.4 仿冒其他Windows身份
11.1.5 作业和日程
11.2 数据备份
11.2.1 手工完全备份
11.2.2 自动完全备份
11.3 数据恢复
11.4 小结 0
第12章 业务逻辑设计最佳实践
12.1 进货业务逻辑设计
12.2 付款业务逻辑设计
12.3 出货业务逻辑设计
12.4 收款业务逻辑设计
12.5 小结
第13章 自扩展商务管理系统
13.1 在原有业务基础上扩展
13.1.1 改变数据库结构
13.1.2 调整数据集结构
13.1.3 调整界面与打印格式
13.2 增加新业务
13.3 小结
第14章 Web客户端程序设计基础
14.1 Web客户端程序基础
14.2 WebForm的基类XmlPage
14.3 Web客户端程序数据模型
14.3.1 数据集及数据存取定义
14.3.2 WebForm的数据绑定
14.3.3 数据更新机制
14.4 Web客户端程序数据模型
14.5 虚拟目录与配置
14.6 小结
第15章 构建Web页最佳实践
15.1 实现一个编辑型的Web页基类
15.2 创建Web项目
15.3 定义数据集
15.4 创建Web页
15.5 建立数据绑定
15.6 建立事件绑定与数据更新
15.7 建立SQL绑定
15.8 Web用户及注册
15.9 查看运行结果
15.10 小结
第三部分
附录A 组件描述语言(Component Markup Language,CML)
A.1 根标签
A.2 属性
A.2.1 颜色属性值表示法
A.2.2 位置属性值表示法
A.2.3 尺寸属性值表示法
A.2.4 枚举属性值表示法
A.2.5 列表框(ListBox)和下拉列表框(ComboBox)Items属性值表示法
A.2.6 PictureBox的Image属性值表示法
A.2.7 事例对象属性值表示法
A.3 数据绑定
A.3.1 简单控件数据绑定
A.3.2 ComboBox、ListBox数据绑定
A.3.3 复杂控件数据绑定
A.4 表达式文法
A.5 属性默认值($)和动态属性(=)
A.5.1 属性默认值($)
A.5.2 动态属性(=)
A.6 事件
A.6.1 签名事件方法
A.6.2 非签名事件方法
A.7 存取组件对象及属性
A.7.1 读取组件属性
A.7.2 设置组件属性
A.8 挂接自定义方法
A.9 系统对象
A.9.1 Me
A.9.2 Me.属性名
A.9.3 !组件名
A.9.4 !组件名.属性
A.9.5 Parent
A.9.6 Parent.属性名
A.9.7 Parent!组件名
A.9.8 Parent!组件名.属性名
A.9.9 Forms["SheetName"]
A.9.10 Forms["SheetName"]!组件名
A.9.11 Forms["SheetName"].属性名
A.9.12 Forms["SheetName"]!组件名.属性名
A.9.13 DataSet(数据集)
A.9.14 Count(主表记录数)
A.9.15 Cols["ColumnName"](主表列)
A.9.16 Parent.DataSet(父Form数据集)
A.9.17 Parent.Count(父Form主表记录数)
A.9.18 Parent.Cols["ColumnName"](父Form主表列)
A.9.19 Forms["SheetName"].DataSet
A.9.20 Forms["SheetName"].Count
A.9.21 Forms["SheetName"].Cols["ColumnName"]
A.9.22 [列号]
A.9.23 [列号].属性名
A.9.24 [列号]!控件ID
A.9.25 [列号]!控件ID .属性名
A.10 数据表(DataTable)
A.10.1 Name属性
A.10.2 IsMainTable属性
A.10.3 SQL属性和Where绑定表达式
A.10.4 Load 属性
A.10.5 Local 属性
A.10.6 From 属性
A.10.7 SQLDebug 属性
A.11 数据列(DataColumn)
A.11.1 ColumnName属性
A.11.2 Caption 属性
A.11.3 DefaultValue 属性
A.11.4 Expression 属性
A.11.5 Update属性
A.12 数据视(DataView)
A.13 快捷键
附录B 基类XmlForm的属性和方法
B.1 属性
B.1.1 public Junxian.AbstractDataAccess.DataAccess DA { get; set }
B.1.2 public DataSet DataSet { get; set }
B.1.3 public string MainTableName { get; set }
B.1.4 public Junxian.XmlForm.XmForm ParentSheet { get; set }
B.1.5 public string CurrentTable { get; set }
B.1.6 public string Shortcut { get; set }
B.2 方法
B.2.1 public virtual void Save(bool bQuestion)
B.2.2 public bool SaveDataToXml(string FileName)
B.2.3 public void Requery(string TableName)
B.2.4 public void RequeryTable(string TableName, bool IsClear)
B.2.5 public void RefreshDataView(string TableName)
B.2.6 public void GetDataView(string TableName)
B.2.7 public void Position_Changed(object sender, System.EventAgrs e)
B.2.8 public void PositionChanged()
附录C 《俊先管理软件开发平台》的文件
附录D 《商务新星.NET》对数据库表结构的限制
附录E Web页面基类XmlPage的属性和方法
E.1 属性
E.1.1 public DataSet DataSet { get; set }
E.1.2 public XmlPage ParentPage { get; set }
E.1.3 public string MainTableName { get; set }
E.1.4 public string PageName { get; set }
E.1.5 public Junxian.AbstractDataAccess.DataAccess DA { get; set }
E.2 方法
E.2.1 public object Parse(string strExpression)
E.2.2 public object Binding(string TableName, string ColumnName)
E.2.3 public void SaveData()
E.2.4 public void UpdateData(string TableName)
E.2.5 public void DeleteTableRecord(string TableName, object KeyValue)
E.2.6 public void RequeryTable(string TableName, bool IsClear)
E.2.7 public virtual void Requery(string TableName)
E.2.8 public void RefreshDataView(string TableName)
E.2.9 public void GotoPage(string PageName)
E.2.10 public void AddChildItem(string ChildTableName)
主要参考文献