第一部分
第1章 體驗軟件開發(fā)新思維
1.1 從一個實例開始
1.2 數(shù)據(jù)庫表結構設計
1.3 采用傳統(tǒng)軟件開發(fā)模式構建
1.3.1 構建數(shù)據(jù)源
1.3.2 構建程序界面
1.3.3 修改綁定源
1.3.4 修改SQL語句和數(shù)據(jù)集
1.3.5 編寫程序
1.3.6 體驗開發(fā)成果
1.4 采用軟件開發(fā)新模式構建
1.4.1 構建數(shù)據(jù)集
1.4.2 體驗XML組件即插即用
1.4.3 建立SQL的綁定
1.4.4 建立數(shù)據(jù)的綁定
1.4.5 事件掛接處理
1.4.6 體驗新模式成果
1.5 軟件開發(fā)新模式的優(yōu)勢
1.6 小結
第2章 XML組件即插即用的機理
2.1 概述
2.2 .NET組件
2.2.1 什么是組件
2.2.2 屬性
2.2.3 事件
2.2.4 數(shù)據(jù)綁定
2.3 XML組件即插即用
2.3.1 什么是XML組件
2.3.2 組件屬性的XML表示
2.3.3 組件事件的XML表示
2.3.4 如何實現(xiàn)即插即用
2.4 組件標簽定義文件
2.5 表達式文法
2.6 屬性處理機制
2.6.1 屬性基本值
2.6.2 屬性默認值
2.6.3 動態(tài)屬性值
2.7 事件處理機制
2.7.1 簽名事件處理
2.7.2 非簽名事件處理
2.8 數(shù)據(jù)模型
2.8.1 數(shù)據(jù)集和數(shù)據(jù)存取定義
2.8.2 數(shù)據(jù)綁定模型和XML表示
2.9 數(shù)據(jù)模型
2.9.1 數(shù)據(jù)存取機制
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 命名創(chuàng)建服務處理
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 數(shù)據(jù)集源代碼生成
3.9.3 數(shù)據(jù)表和數(shù)據(jù)列源代碼生成
3.9.4 SQL源代碼生成
3.9.5 屬性默認值和動態(tài)屬性值的代碼生成
3.9.6 快捷鍵源代碼生成
3.9.7 事件源代碼生成
3.9.8 數(shù)據(jù)綁定源代碼生成
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 數(shù)據(jù)綁定
4.3.1 標簽元素和檢查框元素的數(shù)據(jù)綁定
4.3.2 網格元素的數(shù)據(jù)綁定
4.4 設計元素內存結構
4.4.1 打印標簽描述文件
4.4.2 打印設計元素標簽結構
4.5 小結
第5章 打印報表設計器最佳實踐
5.1 圖形系統(tǒng)概述
5.2 系統(tǒng)初始化
5.3 讀/寫XML
5.3.1 基本屬性格式
5.3.2 圖形格式
5.3.3 數(shù)據(jù)綁定格式
5.4 屬性
5.4.1 屬性默認值
5.4.2 動態(tài)屬性
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章 新思維之商務管理系統(tǒng)體系結構
6.1 商務管理系統(tǒng)的設計目標
6.2 商務管理系統(tǒng)的組成
6.3 客戶端應用程序的基本概念
6.4 商務管理系統(tǒng)架構
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 商務管理系統(tǒng)主界面
7.2 構建檔案
7.2.1 建立數(shù)據(jù)集
7.2.2 設計檔案窗體
7.2.3 運行客戶檔案
7.2.4 設計檔案打印報表
7.3 構建查詢
7.3.1 建立數(shù)據(jù)集
7.3.2 設計查詢
7.3.3 設計查詢打印報表
7.4 小結
第8章 新思維下的數(shù)據(jù)存取
8.1 數(shù)據(jù)存取機制概述
8.2 數(shù)據(jù)存取代理
8.3 DataAccess類
8.4 User類
8.5 小結
第9章 數(shù)據(jù)轉換與生成最佳實踐
9.1 概述
9.2 轉換與生成源和目的
9.3 轉換控制
9.4 小結
第10章 遠程數(shù)據(jù)交換最佳實踐
10.1 遠程數(shù)據(jù)交換原理
10.2 數(shù)據(jù)導出實踐
10.3 數(shù)據(jù)導入實踐
10.4 小結
第11章 數(shù)據(jù)備份與恢復
11.1 數(shù)據(jù)的備份與恢復概述
11.1.1 連接
11.1.2 默認的Windows認證連接
11.1.3 SQL Server登錄
11.1.4 仿冒其他Windows身份
11.1.5 作業(yè)和日程
11.2 數(shù)據(jù)備份
11.2.1 手工完全備份
11.2.2 自動完全備份
11.3 數(shù)據(jù)恢復
11.4 小結 0
第12章 業(yè)務邏輯設計最佳實踐
12.1 進貨業(yè)務邏輯設計
12.2 付款業(yè)務邏輯設計
12.3 出貨業(yè)務邏輯設計
12.4 收款業(yè)務邏輯設計
12.5 小結
第13章 自擴展商務管理系統(tǒng)
13.1 在原有業(yè)務基礎上擴展
13.1.1 改變數(shù)據(jù)庫結構
13.1.2 調整數(shù)據(jù)集結構
13.1.3 調整界面與打印格式
13.2 增加新業(yè)務
13.3 小結
第14章 Web客戶端程序設計基礎
14.1 Web客戶端程序基礎
14.2 WebForm的基類XmlPage
14.3 Web客戶端程序數(shù)據(jù)模型
14.3.1 數(shù)據(jù)集及數(shù)據(jù)存取定義
14.3.2 WebForm的數(shù)據(jù)綁定
14.3.3 數(shù)據(jù)更新機制
14.4 Web客戶端程序數(shù)據(jù)模型
14.5 虛擬目錄與配置
14.6 小結
第15章 構建Web頁最佳實踐
15.1 實現(xiàn)一個編輯型的Web頁基類
15.2 創(chuàng)建Web項目
15.3 定義數(shù)據(jù)集
15.4 創(chuàng)建Web頁
15.5 建立數(shù)據(jù)綁定
15.6 建立事件綁定與數(shù)據(jù)更新
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 數(shù)據(jù)綁定
A.3.1 簡單控件數(shù)據(jù)綁定
A.3.2 ComboBox、ListBox數(shù)據(jù)綁定
A.3.3 復雜控件數(shù)據(jù)綁定
A.4 表達式文法
A.5 屬性默認值($)和動態(tài)屬性(=)
A.5.1 屬性默認值($)
A.5.2 動態(tài)屬性(=)
A.6 事件
A.6.1 簽名事件方法
A.6.2 非簽名事件方法
A.7 存取組件對象及屬性
A.7.1 讀取組件屬性
A.7.2 設置組件屬性
A.8 掛接自定義方法
A.9 系統(tǒng)對象
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(數(shù)據(jù)集)
A.9.14 Count(主表記錄數(shù))
A.9.15 Cols["ColumnName"](主表列)
A.9.16 Parent.DataSet(父Form數(shù)據(jù)集)
A.9.17 Parent.Count(父Form主表記錄數(shù))
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 數(shù)據(jù)表(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 數(shù)據(jù)列(DataColumn)
A.11.1 ColumnName屬性
A.11.2 Caption 屬性
A.11.3 DefaultValue 屬性
A.11.4 Expression 屬性
A.11.5 Update屬性
A.12 數(shù)據(jù)視(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 《俊先管理軟件開發(fā)平臺》的文件
附錄D 《商務新星.NET》對數(shù)據(jù)庫表結構的限制
附錄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)
主要參考文獻