4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)
作者:夏春涛 xchunta@163.com
转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609166.html
4.6 界面层HomeShop.WinForm
App.config
<?
xml version="1.0" encoding="utf-8"
?>
< configuration >
< connectionStrings >
< add name ="HomeShop" connectionString ="Data Source=(local);Initial Catalog=HomeShop;Integrated Security=SSPI;" />
</ connectionStrings >
</ configuration >
< configuration >
< connectionStrings >
< add name ="HomeShop" connectionString ="Data Source=(local);Initial Catalog=HomeShop;Integrated Security=SSPI;" />
</ connectionStrings >
</ configuration >
FormMain.cs
1
using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 // 新添命名空间
10 using HomeShop.BLL;
11
12 namespace HomeShop.WinForm
13 {
14 // 功能:订单管理系统-主界面窗体;
15 // 作者:夏春涛;
16 // 日期:2011-11-30;
17 public partial class FormMain : Form
18 {
19 // Order业务逻辑对象
20 private OrderBiz orderBiz = new OrderBiz();
21
22 // 【窗体构造函数】
23 public FormMain()
24 {
25 InitializeComponent();
26 }
27
28 // 【窗体加载事件】
29 private void FormMain_Load( object sender, EventArgs e)
30 {
31 gridView.AutoGenerateColumns = false; // 禁止DataGridView控件自动生成列
32 BindData_Orders(); // 绑定订单列表
33 }
34
35 // 绑定订单列表
36 private void BindData_Orders()
37 {
38 txtCustomerName.Clear();
39 DataView dataView = orderBiz.GetTable().DefaultView;
40 gridView.DataSource = dataView;
41 labRecordCount.Text = " 共 " + dataView.Table.Rows.Count.ToString() + " 条记录 ";
42 }
43
44 // 【查询】订单
45 private void btnQuery_Click( object sender, EventArgs e)
46 {
47 if ( "" == txtCustomerName.Text.Trim())
48 {
49 MessageBox.Show( this, " 请输入要查询的顾客姓名关键词! ", " 提示 ",
50 MessageBoxButtons.OK, MessageBoxIcon.Information);
51 txtCustomerName.Focus();
52 return;
53 }
54 DataView dataView = orderBiz.GetTable(txtCustomerName.Text.Trim()).DefaultView;
55 gridView.DataSource = dataView;
56 labRecordCount.Text = " 共 " + dataView.Table.Rows.Count.ToString() + " 条记录 ";
57 }
58
59 // 【全部显示】订单
60 private void btnShowAll_Click( object sender, EventArgs e)
61 {
62 BindData_Orders();
63 }
64
65 // 【新增】订单
66 private void menuAdd_Click( object sender, EventArgs e)
67 {
68 FormEdit formEdit = new FormEdit();
69 DialogResult dlgResult = formEdit.ShowDialog( this); // 显示为模式对话框
70 if (DialogResult.OK == dlgResult)
71 {
72 BindData_Orders(); // 重新绑定订单列表
73 }
74 formEdit.Dispose(); // 释放窗体资源
75 }
76
77 // 【修改】订单
78 private void menuUpdate_Click( object sender, EventArgs e)
79 {
80 if (gridView.RowCount == 0) return;
81
82 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
83 int selectedOrderID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderID "].Value;
84 FormEdit formEdit = new FormEdit(selectedOrderID);
85 DialogResult dlgResult = formEdit.ShowDialog( this); // 显示为模式对话框
86 if (DialogResult.OK == dlgResult)
87 {
88 BindData_Orders(); // 重新绑定订单列表
89 gridView.Rows[selectedRowIndex].Selected = true; // 依然选中当前行
90 }
91 formEdit.Dispose(); // 释放窗体资源
92 }
93
94 // 【删除】订单
95 private void menuDelete_Click( object sender, EventArgs e)
96 {
97 if (gridView.RowCount == 0) return;
98
99 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
100 int selectedOrderID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderID "].Value;
101 DialogResult dlgResult = MessageBox.Show( this, " 确认要删除选中的订单吗? ", " 提示 ",
102 MessageBoxButtons.YesNo, MessageBoxIcon.Question);
103 if (DialogResult.Yes == dlgResult)
104 {
105 orderBiz.Delete(selectedOrderID); // 删除订单
106 BindData_Orders(); // 重新绑定订单列表
107 // 选中下一条记录
108 if (selectedRowIndex > gridView.Rows.Count - 1)
109 selectedRowIndex = gridView.Rows.Count - 1;
110 if (selectedRowIndex >= 0)
111 {
112 gridView.Rows[selectedRowIndex].Selected = true;
113 }
114 }
115 }
116
117
118 }
119 }
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 // 新添命名空间
10 using HomeShop.BLL;
11
12 namespace HomeShop.WinForm
13 {
14 // 功能:订单管理系统-主界面窗体;
15 // 作者:夏春涛;
16 // 日期:2011-11-30;
17 public partial class FormMain : Form
18 {
19 // Order业务逻辑对象
20 private OrderBiz orderBiz = new OrderBiz();
21
22 // 【窗体构造函数】
23 public FormMain()
24 {
25 InitializeComponent();
26 }
27
28 // 【窗体加载事件】
29 private void FormMain_Load( object sender, EventArgs e)
30 {
31 gridView.AutoGenerateColumns = false; // 禁止DataGridView控件自动生成列
32 BindData_Orders(); // 绑定订单列表
33 }
34
35 // 绑定订单列表
36 private void BindData_Orders()
37 {
38 txtCustomerName.Clear();
39 DataView dataView = orderBiz.GetTable().DefaultView;
40 gridView.DataSource = dataView;
41 labRecordCount.Text = " 共 " + dataView.Table.Rows.Count.ToString() + " 条记录 ";
42 }
43
44 // 【查询】订单
45 private void btnQuery_Click( object sender, EventArgs e)
46 {
47 if ( "" == txtCustomerName.Text.Trim())
48 {
49 MessageBox.Show( this, " 请输入要查询的顾客姓名关键词! ", " 提示 ",
50 MessageBoxButtons.OK, MessageBoxIcon.Information);
51 txtCustomerName.Focus();
52 return;
53 }
54 DataView dataView = orderBiz.GetTable(txtCustomerName.Text.Trim()).DefaultView;
55 gridView.DataSource = dataView;
56 labRecordCount.Text = " 共 " + dataView.Table.Rows.Count.ToString() + " 条记录 ";
57 }
58
59 // 【全部显示】订单
60 private void btnShowAll_Click( object sender, EventArgs e)
61 {
62 BindData_Orders();
63 }
64
65 // 【新增】订单
66 private void menuAdd_Click( object sender, EventArgs e)
67 {
68 FormEdit formEdit = new FormEdit();
69 DialogResult dlgResult = formEdit.ShowDialog( this); // 显示为模式对话框
70 if (DialogResult.OK == dlgResult)
71 {
72 BindData_Orders(); // 重新绑定订单列表
73 }
74 formEdit.Dispose(); // 释放窗体资源
75 }
76
77 // 【修改】订单
78 private void menuUpdate_Click( object sender, EventArgs e)
79 {
80 if (gridView.RowCount == 0) return;
81
82 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
83 int selectedOrderID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderID "].Value;
84 FormEdit formEdit = new FormEdit(selectedOrderID);
85 DialogResult dlgResult = formEdit.ShowDialog( this); // 显示为模式对话框
86 if (DialogResult.OK == dlgResult)
87 {
88 BindData_Orders(); // 重新绑定订单列表
89 gridView.Rows[selectedRowIndex].Selected = true; // 依然选中当前行
90 }
91 formEdit.Dispose(); // 释放窗体资源
92 }
93
94 // 【删除】订单
95 private void menuDelete_Click( object sender, EventArgs e)
96 {
97 if (gridView.RowCount == 0) return;
98
99 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
100 int selectedOrderID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderID "].Value;
101 DialogResult dlgResult = MessageBox.Show( this, " 确认要删除选中的订单吗? ", " 提示 ",
102 MessageBoxButtons.YesNo, MessageBoxIcon.Question);
103 if (DialogResult.Yes == dlgResult)
104 {
105 orderBiz.Delete(selectedOrderID); // 删除订单
106 BindData_Orders(); // 重新绑定订单列表
107 // 选中下一条记录
108 if (selectedRowIndex > gridView.Rows.Count - 1)
109 selectedRowIndex = gridView.Rows.Count - 1;
110 if (selectedRowIndex >= 0)
111 {
112 gridView.Rows[selectedRowIndex].Selected = true;
113 }
114 }
115 }
116
117
118 }
119 }
FormEdit.cs
1
using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 // 新添命名空间
10 using System.Configuration;
11 using HomeShop.Model;
12 using HomeShop.BLL;
13
14 namespace HomeShop.WinForm
15 {
16 // 功能:订单管理系统-新增/修改订单窗体;
17 // 作者:夏春涛;
18 // 日期:2011-11-30;
19 public partial class FormEdit : Form
20 {
21 // Order业务逻辑对象
22 private OrderBiz orderBiz = new OrderBiz();
23 // 当前订单对象
24 private Order order = new Order();
25
26 // 临时ID,起始值为0,自动递减(避免与正常的正整数ID重复)
27 private int tempID = 0;
28
29 // 【窗体构造函数】
30 public FormEdit()
31 {
32 InitializeComponent();
33 // ----
34 this.Text = " 新增订单 "; // 窗体标题
35 }
36
37 // 【窗体构造函数】-重载,入参:要修改的订单的ID
38 public FormEdit( int orderID)
39 {
40 InitializeComponent();
41 // ----
42 this.Text = " 修改订单 "; // 窗体标题
43 this.order = orderBiz.GetSingle(orderID);
44 }
45
46 // 【窗体加载事件】-初始化控件的内容
47 private void FormEdit_Load( object sender, EventArgs e)
48 {
49 gridView.AutoGenerateColumns = false; // 禁止DataGridView控件自动生成列
50 InitOrderState(); // 初始化订单状态下拉框
51 InitOrderInfo(); // 初始化订单信息
52 }
53
54 // 初始化订单状态下拉框
55 private void InitOrderState()
56 {
57 // 从数据库获取订单状态数据
58 OrderStateBiz orderStateBiz = new OrderStateBiz();
59 DataView dataView = orderStateBiz.GetTable().DefaultView;
60 // 将数据绑定到订单状态下拉框
61 OrderState.ValueMember = " Code ";
62 OrderState.DisplayMember = " Name ";
63 OrderState.DataSource = dataView;
64 }
65
66 // 初始化订单基本信息
67 private void InitOrderInfo()
68 {
69 // 将当前订单基本信息显示在编辑区
70 OrderID.Text = order.OrderID.ToString();
71 CustomerName.Text = order.CustomerName;
72 CustomerPhoneNo.Text = order.CustomerPhoneNo;
73 CustomerAddress.Text = order.CustomerAddress;
74 OrderTime.Value = order.OrderTime;
75 OrderState.SelectedValue = order.OrderStateCode;
76 OrderTotal.Text = order.OrderTotal.ToString(); // 获取订单总金额
77 // 初始化当前订单关联的商品列表
78 gridView.DataSource = order.OrderItems;
79 }
80
81 // 【新增】商品
82 private void btnProductAdd_Click( object sender, EventArgs e)
83 {
84 if (!ValidateInput_Product()) return;
85
86 OrderItem orderItem = new OrderItem();
87 orderItem.OrderID = this.order.OrderID;
88 orderItem.OrderItemID = tempID--;
89 orderItem.Product = Product.Text.Trim();
90 orderItem.UnitPrice = Convert.ToDecimal(UnitPrice.Text.Replace( " ", ""));
91 orderItem.Quantity = Convert.ToInt32(Quantity.Text.Replace( " ", ""));
92 this.order.OrderItems.Add(orderItem);
93
94 gridView.DataSource = new List<OrderItem>();
95 gridView.DataSource = this.order.OrderItems;
96 OrderTotal.Text = this.order.OrderTotal.ToString();
97 gridView.Rows[gridView.Rows.Count - 1].Selected = true;
98 }
99
100 // 验证用户输入-新增/修改商品信息时
101 private bool ValidateInput_Product()
102 {
103 // 验证商品名称
104 if ( "" == Product.Text.Trim())
105 {
106 MessageBox.Show( this, " 请输入商品名称! ", " 提示 ",
107 MessageBoxButtons.OK, MessageBoxIcon.Information);
108 Product.Focus();
109 return false;
110 }
111 // 验证商品单价
112 try
113 {
114 string regexString = @" ^[0-9]*[0-9]+[\.]*[0-9]*$ "; // 正则表达式-非负数
115 RegexStringValidator validator = new RegexStringValidator(regexString);
116 validator.Validate(UnitPrice.Text.Replace( " ", ""));
117 }
118 catch
119 {
120 MessageBox.Show( this, " 请输入正确的商品单价(非负数)! ", " 提示 ",
121 MessageBoxButtons.OK, MessageBoxIcon.Information);
122 UnitPrice.Focus();
123 return false;
124 }
125 // 验证商品数量
126 try
127 {
128 string regexString = @" ^[0-9]*[1-9][0-9]*$ "; // 正则表达式-正整数
129 RegexStringValidator validator = new RegexStringValidator(regexString);
130 validator.Validate(Quantity.Text.Replace( " ", ""));
131 }
132 catch
133 {
134 MessageBox.Show( this, " 请输入正确的商品数量(正整数)! ", " 提示 ",
135 MessageBoxButtons.OK, MessageBoxIcon.Information);
136 Quantity.Focus();
137 return false;
138 }
139
140 return true;
141 }
142
143 // 【修改】选中的商品
144 private void btnProductUpdate_Click( object sender, EventArgs e)
145 {
146 if (gridView.RowCount == 0) return;
147 if (!ValidateInput_Product()) return;
148
149 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
150
151 int orderItemID = ( int)gridView.Rows[selectedRowIndex].Cells[ " Col_OrderItemID "].Value;
152 OrderItem orderItem = this.order.OrderItems.Find(
153 delegate(OrderItem item){ return item.OrderItemID == orderItemID; });
154 orderItem.Product = Product.Text.Trim();
155 orderItem.UnitPrice = Convert.ToDecimal(UnitPrice.Text.Replace( " ", ""));
156 orderItem.Quantity = Convert.ToInt32(Quantity.Text.Replace( " ", ""));
157
158 gridView.DataSource = new List<OrderItem>();
159 gridView.DataSource = this.order.OrderItems;
160 OrderTotal.Text = this.order.OrderTotal.ToString();
161 gridView.Rows[selectedRowIndex].Selected = true;
162 }
163
164 // 【删除】选中的商品
165 private void btnProductDelete_Click( object sender, EventArgs e)
166 {
167 if (gridView.RowCount == 0) return;
168
169 DialogResult dlgResult = MessageBox.Show( this, " 确认要删除选中的商品吗? ", " 提示 ",
170 MessageBoxButtons.YesNo, MessageBoxIcon.Question);
171 if (DialogResult.Yes == dlgResult)
172 {
173 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
174
175 int orderItemID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderItemID "].Value;
176 OrderItem orderItem = this.order.OrderItems.Find(
177 delegate(OrderItem item){ return item.OrderItemID == orderItemID; });
178 this.order.OrderItems.Remove(orderItem);
179
180 gridView.DataSource = new List<OrderItem>();
181 gridView.DataSource = this.order.OrderItems;
182 OrderTotal.Text = this.order.OrderTotal.ToString();
183 // 选中下一条记录
184 if (selectedRowIndex > gridView.Rows.Count - 1)
185 selectedRowIndex = gridView.Rows.Count - 1;
186 if (selectedRowIndex >= 0)
187 {
188 gridView.Rows[selectedRowIndex].Selected = true;
189 ShowSelectedRowInfo(); // 将选中的商品信息显示在编辑区
190 }
191 }
192 }
193
194 // 【选择更改事件】-将选中的商品信息显示在编辑区
195 private void gridView_SelectionChanged( object sender, EventArgs e)
196 {
197 ShowSelectedRowInfo();
198 }
199
200 // 将选中的商品信息显示在编辑区
201 private void ShowSelectedRowInfo()
202 {
203 if (gridView.SelectedRows.Count == 0) return;
204 Product.Text = gridView.SelectedRows[ 0].Cells[ " Col_Product "].Value.ToString();
205 UnitPrice.Text = gridView.SelectedRows[ 0].Cells[ " Col_UnitPrice "].Value.ToString();
206 Quantity.Text = gridView.SelectedRows[ 0].Cells[ " Col_Quantity "].Value.ToString();
207 }
208
209 // 【确定】-保存新增/修改的订单
210 private void btnOK_Click( object sender, EventArgs e)
211 {
212 if (!ValidateInput_Order()) return; // 验证用户输入
213
214 order.OrderStateCode = OrderState.SelectedValue.ToString();
215 order.OrderTime = OrderTime.Value;
216 order.CustomerAddress = CustomerAddress.Text.Trim();
217 order.CustomerName = CustomerName.Text.Trim();
218 order.CustomerPhoneNo = CustomerPhoneNo.Text.Trim();
219
220 if ( 0 == this.order.OrderID) // 新增订单
221 {
222 orderBiz.Add( this.order);
223 MessageBox.Show( this, " 新增订单成功! ", " 提示 ",
224 MessageBoxButtons.OK, MessageBoxIcon.Information);
225 }
226 else // 修改订单
227 {
228 orderBiz.Update( this.order);
229 MessageBox.Show( this, " 修改订单成功! ", " 提示 ",
230 MessageBoxButtons.OK, MessageBoxIcon.Information);
231 }
232
233 this.DialogResult = DialogResult.OK; // 设置对话框结果
234 this.Close(); // 关闭窗体
235 }
236
237 // 验证用户输入-保存新增/修改的订单时
238 private bool ValidateInput_Order()
239 {
240 // 验证顾客姓名
241 if ( "" == CustomerName.Text.Trim())
242 {
243 MessageBox.Show( this, " 请输入顾客姓名! ", " 提示 ",
244 MessageBoxButtons.OK, MessageBoxIcon.Information);
245 CustomerName.Focus();
246 return false;
247 }
248 // 验证联系电话
249 if ( "" == CustomerPhoneNo.Text.Trim())
250 {
251 MessageBox.Show( this, " 请输入联系电话! ", " 提示 ",
252 MessageBoxButtons.OK, MessageBoxIcon.Information);
253 CustomerPhoneNo.Focus();
254 return false;
255 }
256 // 订购商品信息
257 if ( 0 == gridView.Rows.Count)
258 {
259 MessageBox.Show( this, " 请输入订购商品信息! ", " 提示 ",
260 MessageBoxButtons.OK, MessageBoxIcon.Information);
261 Product.Focus();
262 return false;
263 }
264
265 return true;
266 }
267
268 // 【取消】-关闭窗体
269 private void btnCancel_Click( object sender, EventArgs e)
270 {
271 this.Close(); // 关闭窗体
272 }
273 }
274 }
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 // 新添命名空间
10 using System.Configuration;
11 using HomeShop.Model;
12 using HomeShop.BLL;
13
14 namespace HomeShop.WinForm
15 {
16 // 功能:订单管理系统-新增/修改订单窗体;
17 // 作者:夏春涛;
18 // 日期:2011-11-30;
19 public partial class FormEdit : Form
20 {
21 // Order业务逻辑对象
22 private OrderBiz orderBiz = new OrderBiz();
23 // 当前订单对象
24 private Order order = new Order();
25
26 // 临时ID,起始值为0,自动递减(避免与正常的正整数ID重复)
27 private int tempID = 0;
28
29 // 【窗体构造函数】
30 public FormEdit()
31 {
32 InitializeComponent();
33 // ----
34 this.Text = " 新增订单 "; // 窗体标题
35 }
36
37 // 【窗体构造函数】-重载,入参:要修改的订单的ID
38 public FormEdit( int orderID)
39 {
40 InitializeComponent();
41 // ----
42 this.Text = " 修改订单 "; // 窗体标题
43 this.order = orderBiz.GetSingle(orderID);
44 }
45
46 // 【窗体加载事件】-初始化控件的内容
47 private void FormEdit_Load( object sender, EventArgs e)
48 {
49 gridView.AutoGenerateColumns = false; // 禁止DataGridView控件自动生成列
50 InitOrderState(); // 初始化订单状态下拉框
51 InitOrderInfo(); // 初始化订单信息
52 }
53
54 // 初始化订单状态下拉框
55 private void InitOrderState()
56 {
57 // 从数据库获取订单状态数据
58 OrderStateBiz orderStateBiz = new OrderStateBiz();
59 DataView dataView = orderStateBiz.GetTable().DefaultView;
60 // 将数据绑定到订单状态下拉框
61 OrderState.ValueMember = " Code ";
62 OrderState.DisplayMember = " Name ";
63 OrderState.DataSource = dataView;
64 }
65
66 // 初始化订单基本信息
67 private void InitOrderInfo()
68 {
69 // 将当前订单基本信息显示在编辑区
70 OrderID.Text = order.OrderID.ToString();
71 CustomerName.Text = order.CustomerName;
72 CustomerPhoneNo.Text = order.CustomerPhoneNo;
73 CustomerAddress.Text = order.CustomerAddress;
74 OrderTime.Value = order.OrderTime;
75 OrderState.SelectedValue = order.OrderStateCode;
76 OrderTotal.Text = order.OrderTotal.ToString(); // 获取订单总金额
77 // 初始化当前订单关联的商品列表
78 gridView.DataSource = order.OrderItems;
79 }
80
81 // 【新增】商品
82 private void btnProductAdd_Click( object sender, EventArgs e)
83 {
84 if (!ValidateInput_Product()) return;
85
86 OrderItem orderItem = new OrderItem();
87 orderItem.OrderID = this.order.OrderID;
88 orderItem.OrderItemID = tempID--;
89 orderItem.Product = Product.Text.Trim();
90 orderItem.UnitPrice = Convert.ToDecimal(UnitPrice.Text.Replace( " ", ""));
91 orderItem.Quantity = Convert.ToInt32(Quantity.Text.Replace( " ", ""));
92 this.order.OrderItems.Add(orderItem);
93
94 gridView.DataSource = new List<OrderItem>();
95 gridView.DataSource = this.order.OrderItems;
96 OrderTotal.Text = this.order.OrderTotal.ToString();
97 gridView.Rows[gridView.Rows.Count - 1].Selected = true;
98 }
99
100 // 验证用户输入-新增/修改商品信息时
101 private bool ValidateInput_Product()
102 {
103 // 验证商品名称
104 if ( "" == Product.Text.Trim())
105 {
106 MessageBox.Show( this, " 请输入商品名称! ", " 提示 ",
107 MessageBoxButtons.OK, MessageBoxIcon.Information);
108 Product.Focus();
109 return false;
110 }
111 // 验证商品单价
112 try
113 {
114 string regexString = @" ^[0-9]*[0-9]+[\.]*[0-9]*$ "; // 正则表达式-非负数
115 RegexStringValidator validator = new RegexStringValidator(regexString);
116 validator.Validate(UnitPrice.Text.Replace( " ", ""));
117 }
118 catch
119 {
120 MessageBox.Show( this, " 请输入正确的商品单价(非负数)! ", " 提示 ",
121 MessageBoxButtons.OK, MessageBoxIcon.Information);
122 UnitPrice.Focus();
123 return false;
124 }
125 // 验证商品数量
126 try
127 {
128 string regexString = @" ^[0-9]*[1-9][0-9]*$ "; // 正则表达式-正整数
129 RegexStringValidator validator = new RegexStringValidator(regexString);
130 validator.Validate(Quantity.Text.Replace( " ", ""));
131 }
132 catch
133 {
134 MessageBox.Show( this, " 请输入正确的商品数量(正整数)! ", " 提示 ",
135 MessageBoxButtons.OK, MessageBoxIcon.Information);
136 Quantity.Focus();
137 return false;
138 }
139
140 return true;
141 }
142
143 // 【修改】选中的商品
144 private void btnProductUpdate_Click( object sender, EventArgs e)
145 {
146 if (gridView.RowCount == 0) return;
147 if (!ValidateInput_Product()) return;
148
149 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
150
151 int orderItemID = ( int)gridView.Rows[selectedRowIndex].Cells[ " Col_OrderItemID "].Value;
152 OrderItem orderItem = this.order.OrderItems.Find(
153 delegate(OrderItem item){ return item.OrderItemID == orderItemID; });
154 orderItem.Product = Product.Text.Trim();
155 orderItem.UnitPrice = Convert.ToDecimal(UnitPrice.Text.Replace( " ", ""));
156 orderItem.Quantity = Convert.ToInt32(Quantity.Text.Replace( " ", ""));
157
158 gridView.DataSource = new List<OrderItem>();
159 gridView.DataSource = this.order.OrderItems;
160 OrderTotal.Text = this.order.OrderTotal.ToString();
161 gridView.Rows[selectedRowIndex].Selected = true;
162 }
163
164 // 【删除】选中的商品
165 private void btnProductDelete_Click( object sender, EventArgs e)
166 {
167 if (gridView.RowCount == 0) return;
168
169 DialogResult dlgResult = MessageBox.Show( this, " 确认要删除选中的商品吗? ", " 提示 ",
170 MessageBoxButtons.YesNo, MessageBoxIcon.Question);
171 if (DialogResult.Yes == dlgResult)
172 {
173 int selectedRowIndex = gridView.SelectedRows[ 0].Index;
174
175 int orderItemID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderItemID "].Value;
176 OrderItem orderItem = this.order.OrderItems.Find(
177 delegate(OrderItem item){ return item.OrderItemID == orderItemID; });
178 this.order.OrderItems.Remove(orderItem);
179
180 gridView.DataSource = new List<OrderItem>();
181 gridView.DataSource = this.order.OrderItems;
182 OrderTotal.Text = this.order.OrderTotal.ToString();
183 // 选中下一条记录
184 if (selectedRowIndex > gridView.Rows.Count - 1)
185 selectedRowIndex = gridView.Rows.Count - 1;
186 if (selectedRowIndex >= 0)
187 {
188 gridView.Rows[selectedRowIndex].Selected = true;
189 ShowSelectedRowInfo(); // 将选中的商品信息显示在编辑区
190 }
191 }
192 }
193
194 // 【选择更改事件】-将选中的商品信息显示在编辑区
195 private void gridView_SelectionChanged( object sender, EventArgs e)
196 {
197 ShowSelectedRowInfo();
198 }
199
200 // 将选中的商品信息显示在编辑区
201 private void ShowSelectedRowInfo()
202 {
203 if (gridView.SelectedRows.Count == 0) return;
204 Product.Text = gridView.SelectedRows[ 0].Cells[ " Col_Product "].Value.ToString();
205 UnitPrice.Text = gridView.SelectedRows[ 0].Cells[ " Col_UnitPrice "].Value.ToString();
206 Quantity.Text = gridView.SelectedRows[ 0].Cells[ " Col_Quantity "].Value.ToString();
207 }
208
209 // 【确定】-保存新增/修改的订单
210 private void btnOK_Click( object sender, EventArgs e)
211 {
212 if (!ValidateInput_Order()) return; // 验证用户输入
213
214 order.OrderStateCode = OrderState.SelectedValue.ToString();
215 order.OrderTime = OrderTime.Value;
216 order.CustomerAddress = CustomerAddress.Text.Trim();
217 order.CustomerName = CustomerName.Text.Trim();
218 order.CustomerPhoneNo = CustomerPhoneNo.Text.Trim();
219
220 if ( 0 == this.order.OrderID) // 新增订单
221 {
222 orderBiz.Add( this.order);
223 MessageBox.Show( this, " 新增订单成功! ", " 提示 ",
224 MessageBoxButtons.OK, MessageBoxIcon.Information);
225 }
226 else // 修改订单
227 {
228 orderBiz.Update( this.order);
229 MessageBox.Show( this, " 修改订单成功! ", " 提示 ",
230 MessageBoxButtons.OK, MessageBoxIcon.Information);
231 }
232
233 this.DialogResult = DialogResult.OK; // 设置对话框结果
234 this.Close(); // 关闭窗体
235 }
236
237 // 验证用户输入-保存新增/修改的订单时
238 private bool ValidateInput_Order()
239 {
240 // 验证顾客姓名
241 if ( "" == CustomerName.Text.Trim())
242 {
243 MessageBox.Show( this, " 请输入顾客姓名! ", " 提示 ",
244 MessageBoxButtons.OK, MessageBoxIcon.Information);
245 CustomerName.Focus();
246 return false;
247 }
248 // 验证联系电话
249 if ( "" == CustomerPhoneNo.Text.Trim())
250 {
251 MessageBox.Show( this, " 请输入联系电话! ", " 提示 ",
252 MessageBoxButtons.OK, MessageBoxIcon.Information);
253 CustomerPhoneNo.Focus();
254 return false;
255 }
256 // 订购商品信息
257 if ( 0 == gridView.Rows.Count)
258 {
259 MessageBox.Show( this, " 请输入订购商品信息! ", " 提示 ",
260 MessageBoxButtons.OK, MessageBoxIcon.Information);
261 Product.Focus();
262 return false;
263 }
264
265 return true;
266 }
267
268 // 【取消】-关闭窗体
269 private void btnCancel_Click( object sender, EventArgs e)
270 {
271 this.Close(); // 关闭窗体
272 }
273 }
274 }
数据库文件:/Files/SummerRain/NetDbDevRoad/HomeShopDB.rar
完整源代码:/Files/SummerRain/NetDbDevRoad/4使用ADONET实现三层架构Table.rar