.NET数据库编程求索之路--5.使用ADO.NET实现(三层架构篇-使用List传递数据)(3)

简介: 5.使用ADO.NET实现(三层架构篇-使用List传递数据)(2)   作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/26/2610957.

5.使用ADO.NET实现(三层架构篇-使用List传递数据)(2)

 

作者:夏春涛 xchunta@163.com

转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/26/2610957.html

 

5.4 界面层HomeShop.WinForm

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.Model;
 11  using HomeShop.BLL;
 12 
 13  namespace HomeShop.WinForm
 14 {
 15      // 功能:订单管理系统-主界面窗体;
 16       // 作者:夏春涛;
 17       // 日期:2011-12-02;
 18       public  partial  class FormMain : Form
 19     {
 20          // Order业务逻辑对象
 21           private OrderBiz orderBiz =  new OrderBiz();
 22 
 23          // 【窗体构造函数】
 24           public FormMain()
 25         {
 26             InitializeComponent();            
 27         }
 28 
 29          // 【窗体加载事件】
 30           private  void FormMain_Load( object sender, EventArgs e)
 31         {   
 32             gridView.AutoGenerateColumns =  false; // 禁止DataGridView控件自动生成列         
 33              BindData_Orders(); // 绑定订单列表
 34          }
 35 
 36          // 绑定订单列表
 37           private  void BindData_Orders()
 38         {
 39             txtCustomerName.Clear();
 40             List<Order> list = orderBiz.GetList();
 41             gridView.DataSource = list;
 42             labRecordCount.Text =  " 共  " + list.Count.ToString() +  "  条记录 ";
 43         }
 44 
 45          // 【查询】订单
 46           private  void btnQuery_Click( object sender, EventArgs e)
 47         {
 48              if ( "" == txtCustomerName.Text.Trim())
 49             {
 50                 MessageBox.Show( this" 请输入要查询的顾客姓名关键词! "" 提示 "
 51                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
 52                 txtCustomerName.Focus();
 53                  return;
 54             }
 55             List<Order> list = orderBiz.GetList(txtCustomerName.Text.Trim());
 56             gridView.DataSource = list;
 57             labRecordCount.Text =  " 共  " + list.Count.ToString() +  "  条记录 ";
 58         }
 59 
 60          // 【全部显示】订单
 61           private  void btnShowAll_Click( object sender, EventArgs e)
 62         {
 63             BindData_Orders();
 64         }
 65 
 66          // 【新增】订单
 67           private  void menuAdd_Click( object sender, EventArgs e)
 68         {
 69             FormEdit formEdit =  new FormEdit();
 70             DialogResult dlgResult = formEdit.ShowDialog( this); // 显示为模式对话框
 71               if (DialogResult.OK == dlgResult)
 72             {
 73                 BindData_Orders(); // 重新绑定订单列表
 74              }
 75             formEdit.Dispose(); // 释放窗体资源
 76          }
 77 
 78          // 【修改】订单
 79           private  void menuUpdate_Click( object sender, EventArgs e)
 80         {
 81              if (gridView.RowCount ==  0return;
 82 
 83              int selectedRowIndex = gridView.SelectedRows[ 0].Index;
 84              int selectedOrderID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderID "].Value;
 85             FormEdit formEdit =  new FormEdit(selectedOrderID);
 86             DialogResult dlgResult = formEdit.ShowDialog( this); // 显示为模式对话框
 87               if (DialogResult.OK == dlgResult)
 88             {
 89                 BindData_Orders(); // 重新绑定订单列表
 90                  gridView.Rows[selectedRowIndex].Selected =  true; // 依然选中当前行
 91              }
 92             formEdit.Dispose(); // 释放窗体资源
 93          }
 94 
 95          // 【删除】订单
 96           private  void menuDelete_Click( object sender, EventArgs e)
 97         {
 98              if (gridView.RowCount ==  0return;
 99 
100              int selectedRowIndex = gridView.SelectedRows[ 0].Index;
101              int selectedOrderID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderID "].Value;
102             DialogResult dlgResult = MessageBox.Show( this" 确认要删除选中的订单吗? "" 提示 "
103                                                      MessageBoxButtons.YesNo, MessageBoxIcon.Question);
104              if (DialogResult.Yes == dlgResult)
105             {
106                 orderBiz.Delete(selectedOrderID); // 删除订单
107                  BindData_Orders(); // 重新绑定订单列表
108                   // 选中下一条记录
109                   if (selectedRowIndex > gridView.Rows.Count -  1)
110                     selectedRowIndex = gridView.Rows.Count -  1;
111                  if (selectedRowIndex >=  0)
112                 {
113                     gridView.Rows[selectedRowIndex].Selected =  true;
114                 }
115             }         
116         }
117 
118         
119     }
120 }

 

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-12-02;
 19       public  partial  class FormEdit : Form
 20     {
 21          // Order业务逻辑对象
 22           private OrderBiz orderBiz =  new OrderBiz();
 23 
 24          // 当前订单对象
 25           private Order order =  new Order();
 26 
 27          // 临时ID,起始值为0,自动递减(避免与正常的正整数ID重复)
 28           private  int tempID =  0;
 29 
 30          // 【窗体构造函数】
 31           public FormEdit()
 32         {
 33             InitializeComponent();
 34              // ----
 35               this.Text =  " 新增订单 "; // 窗体标题            
 36          }
 37 
 38          // 【窗体构造函数】-重载,入参:要修改的订单的ID
 39           public FormEdit( int orderID)
 40         {
 41             InitializeComponent();
 42              // ----
 43               this.Text =  " 修改订单 "; // 窗体标题 
 44               this.order = orderBiz.GetSingle(orderID);             
 45         }
 46 
 47          // 【窗体加载事件】-初始化控件的内容
 48           private  void FormEdit_Load( object sender, EventArgs e)
 49         {
 50             gridView.AutoGenerateColumns =  false; // 禁止DataGridView控件自动生成列                     
 51              InitOrderState(); // 初始化订单状态下拉框            
 52              InitOrderInfo(); // 初始化订单信息
 53          }
 54 
 55          // 初始化订单状态下拉框
 56           private  void InitOrderState()
 57         { 
 58             OrderStateBiz orderStateBiz =  new OrderStateBiz();
 59             OrderState.DataSource = orderStateBiz.GetList();
 60             OrderState.ValueMember =  " Code ";
 61             OrderState.DisplayMember =  " Name ";
 62         }
 63 
 64          // 初始化订单基本信息
 65           private  void InitOrderInfo()
 66         {
 67              // 将当前订单基本信息显示在编辑区
 68              OrderID.Text = order.OrderID.ToString();
 69             CustomerName.Text = order.CustomerName;
 70             CustomerPhoneNo.Text = order.CustomerPhoneNo;
 71             CustomerAddress.Text = order.CustomerAddress;
 72             OrderTime.Value = order.OrderTime;
 73             OrderState.SelectedValue = order.OrderStateCode;
 74             OrderTotal.Text = order.OrderTotal.ToString(); // 获取订单总金额
 75               // 初始化当前订单关联的商品列表
 76              gridView.DataSource = order.OrderItems;
 77         }
 78    
 79          // 【新增】商品
 80           private  void btnProductAdd_Click( object sender, EventArgs e)
 81         {
 82              if (!ValidateInput_Product())  return;
 83 
 84             OrderItem orderItem =  new OrderItem();
 85             orderItem.OrderID =  this.order.OrderID;
 86             orderItem.OrderItemID = tempID--;
 87             orderItem.Product = Product.Text.Trim();
 88             orderItem.UnitPrice = Convert.ToDecimal(UnitPrice.Text.Replace( "   """));
 89             orderItem.Quantity = Convert.ToInt32(Quantity.Text.Replace( "   """));
 90              this.order.OrderItems.Add(orderItem);
 91             
 92             gridView.DataSource =  new List<OrderItem>();
 93             gridView.DataSource =  this.order.OrderItems;
 94             OrderTotal.Text =  this.order.OrderTotal.ToString();
 95             gridView.Rows[gridView.Rows.Count -  1].Selected =  true;
 96         }
 97 
 98          // 验证用户输入-新增/修改商品信息时
 99           private  bool ValidateInput_Product()
100         {
101              // 验证商品名称
102               if ( "" == Product.Text.Trim())
103             {
104                 MessageBox.Show( this" 请输入商品名称! "" 提示 ",
105                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
106                 Product.Focus();
107                  return  false;
108             }
109              // 验证商品单价            
110               try
111             {
112                  string regexString =  @" ^[0-9]*[0-9]+[\.]*[0-9]*$ "; // 正则表达式-非负数
113                  RegexStringValidator validator =  new RegexStringValidator(regexString);
114                 validator.Validate(UnitPrice.Text.Replace( "   """));
115             }
116              catch
117             {
118                 MessageBox.Show( this" 请输入正确的商品单价(非负数)! "" 提示 ",
119                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
120                 UnitPrice.Focus();
121                  return  false;
122             }
123              // 验证商品数量            
124               try
125             {
126                  string regexString =  @" ^[0-9]*[1-9][0-9]*$ "; // 正则表达式-正整数
127                  RegexStringValidator validator =  new RegexStringValidator(regexString);
128                 validator.Validate(Quantity.Text.Replace( "   """));
129             }
130              catch
131             {
132                 MessageBox.Show( this" 请输入正确的商品数量(正整数)! "" 提示 ",
133                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
134                 Quantity.Focus();
135                  return  false;
136             }
137 
138              return  true;
139         }
140 
141          // 【修改】选中的商品
142           private  void btnProductUpdate_Click( object sender, EventArgs e)
143         {
144              if (gridView.RowCount ==  0return;
145              if (!ValidateInput_Product())  return;
146 
147              int selectedRowIndex = gridView.SelectedRows[ 0].Index;
148 
149              int orderItemID = ( int)gridView.Rows[selectedRowIndex].Cells[ " Col_OrderItemID "].Value;
150             OrderItem orderItem =  this.order.OrderItems.Find(
151                                        delegate(OrderItem item){  return item.OrderItemID == orderItemID; });            
152             orderItem.Product = Product.Text.Trim();
153             orderItem.UnitPrice = Convert.ToDecimal(UnitPrice.Text.Replace( "   """));
154             orderItem.Quantity = Convert.ToInt32(Quantity.Text.Replace( "   """));
155 
156             gridView.DataSource =  new List<OrderItem>();
157             gridView.DataSource =  this.order.OrderItems;
158             OrderTotal.Text =  this.order.OrderTotal.ToString();
159             gridView.Rows[selectedRowIndex].Selected =  true;
160         }
161 
162          // 【删除】选中的商品
163           private  void btnProductDelete_Click( object sender, EventArgs e)
164         {
165              if (gridView.RowCount ==  0return;            
166             
167             DialogResult dlgResult = MessageBox.Show( this" 确认要删除选中的商品吗? "" 提示 "
168                                                 MessageBoxButtons.YesNo, MessageBoxIcon.Question);
169              if (DialogResult.Yes == dlgResult)
170             {
171                  int selectedRowIndex = gridView.SelectedRows[ 0].Index; 
172                 
173                  int orderItemID = ( int)gridView.SelectedRows[ 0].Cells[ " Col_OrderItemID "].Value;
174                 OrderItem orderItem =  this.order.OrderItems.Find(
175                                            delegate(OrderItem item){  return item.OrderItemID == orderItemID; });
176                  this.order.OrderItems.Remove(orderItem);
177 
178                 gridView.DataSource =  new List<OrderItem>();
179                 gridView.DataSource =  this.order.OrderItems;
180                 OrderTotal.Text =  this.order.OrderTotal.ToString();
181                  // 选中下一条记录
182                   if (selectedRowIndex > gridView.Rows.Count -  1)
183                     selectedRowIndex = gridView.Rows.Count -  1;
184                  if (selectedRowIndex >=  0)
185                 {
186                     gridView.Rows[selectedRowIndex].Selected =  true;
187                     ShowSelectedRowInfo(); // 将选中的商品信息显示在编辑区
188                  }
189             }
190         }
191 
192          // 【选择更改事件】-将选中的商品信息显示在编辑区
193           private  void gridView_SelectionChanged( object sender, EventArgs e)
194         {
195             ShowSelectedRowInfo();
196         }
197 
198          // 将选中的商品信息显示在编辑区
199           private  void ShowSelectedRowInfo()
200         {
201              if (gridView.SelectedRows.Count ==  0return;
202             Product.Text = gridView.SelectedRows[ 0].Cells[ " Col_Product "].Value.ToString();
203             UnitPrice.Text = gridView.SelectedRows[ 0].Cells[ " Col_UnitPrice "].Value.ToString();
204             Quantity.Text = gridView.SelectedRows[ 0].Cells[ " Col_Quantity "].Value.ToString();
205         }        
206 
207          // 【确定】-保存新增/修改的订单
208           private  void btnOK_Click( object sender, EventArgs e)
209         {
210              if (!ValidateInput_Order())  return; // 验证用户输入
211 
212             order.OrderStateCode = OrderState.SelectedValue.ToString();
213             order.OrderTime = OrderTime.Value;
214             order.CustomerAddress = CustomerAddress.Text.Trim();
215             order.CustomerName = CustomerName.Text.Trim();
216             order.CustomerPhoneNo = CustomerPhoneNo.Text.Trim();
217 
218              if ( 0 ==  this.order.OrderID) // 新增订单
219              {
220                 orderBiz.Add( this.order);
221                 MessageBox.Show( this" 新增订单成功! "" 提示 ",
222                     MessageBoxButtons.OK, MessageBoxIcon.Information);
223             }
224              else  // 修改订单
225              {
226                 orderBiz.Update( this.order);
227                 MessageBox.Show( this" 修改订单成功! "" 提示 ",
228                     MessageBoxButtons.OK, MessageBoxIcon.Information);
229             }
230 
231              this.DialogResult = DialogResult.OK; // 设置对话框结果
232               this.Close(); // 关闭窗体
233          }
234 
235          // 验证用户输入-保存新增/修改的订单时
236           private  bool ValidateInput_Order()
237         {
238              // 验证顾客姓名
239               if ( "" == CustomerName.Text.Trim())
240             {
241                 MessageBox.Show( this" 请输入顾客姓名! "" 提示 ",
242                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
243                 CustomerName.Focus();
244                  return  false;
245             }
246              // 验证联系电话
247               if ( "" == CustomerPhoneNo.Text.Trim())
248             {
249                 MessageBox.Show( this" 请输入联系电话! "" 提示 ",
250                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
251                 CustomerPhoneNo.Focus();
252                  return  false;
253             }
254              // 订购商品信息
255               if ( 0 == gridView.Rows.Count)
256             {
257                 MessageBox.Show( this" 请输入订购商品信息! "" 提示 ",
258                                 MessageBoxButtons.OK, MessageBoxIcon.Information);
259                 Product.Focus();
260                  return  false;
261             }
262 
263              return  true;
264         }
265         
266          // 【取消】-关闭窗体
267           private  void btnCancel_Click( object sender, EventArgs e)
268         {
269              this.Close(); // 关闭窗体
270          }
271     }
272 }

 

 

目录
相关文章
|
4月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
2月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
104 11
|
3月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
3月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
312 0
|
5月前
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
5月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。
|
6月前
|
存储 Cloud Native 关系型数据库
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
367 3

热门文章

最新文章