WareDataManage.cs
上传用户:hjieqiu
上传日期:2013-05-11
资源大小:16494k
文件大小:13k
源码类别:

企业管理

开发平台:

C#

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. namespace 进销存管理系统
  8. {
  9. /// <summary>
  10. /// WareDataManage 的摘要说明。
  11. /// </summary>
  12. public class WareDataManage : System.Windows.Forms.Form
  13. {
  14. private bool blSellTableShow;
  15. private DataSet ds = new DataSet();
  16. private LinkDataBase link = new LinkDataBase();
  17. private string sendTableName = "商品清单";
  18. private string sendStrSQL = "SELECT 货号, 条码, 拼音编码, 品名, 单位, 进货价, 销售价1, 销售价2, 规格, 产地, 类别, 最低售价 FROM 商品清单";
  19. private System.Windows.Forms.DataGrid dgrd_WareData;
  20. private System.Windows.Forms.ToolBar toolBar1;
  21. private System.Windows.Forms.ToolBarButton tbarBtnSave;
  22. private System.Windows.Forms.ImageList imageList1;
  23. private System.Windows.Forms.ToolBarButton tbarBtnDelete;
  24. private System.Windows.Forms.GroupBox groupBox1;
  25. private System.Windows.Forms.Label label1;
  26. private System.Windows.Forms.TextBox txt_WareWord;
  27. private System.Windows.Forms.Button btn_Search;
  28. private System.ComponentModel.IContainer components;
  29. public WareDataManage()
  30. {
  31. //
  32. // Windows 窗体设计器支持所必需的
  33. //
  34. InitializeComponent();
  35. //
  36. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  37. //
  38. }
  39. //--------重载构造函数-----------
  40. public WareDataManage(bool blShowToolBar)
  41. {
  42. //
  43. // Windows 窗体设计器支持所必需的
  44. //
  45. InitializeComponent();
  46. //
  47. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  48. //
  49. this.ds = link.SelectDataBase(sendStrSQL,sendTableName);//创建数据库连接
  50. //如果blToolBarShow为false,则表示该窗体由销售单和进货单生成,用于双击选择商品
  51. this.DataGridStateControl(blShowToolBar); 
  52. this.dgrd_WareData.DataSource = ds.Tables[0];
  53. this.toolBar1.Enabled = blShowToolBar;
  54. }
  55. /// <summary>
  56. /// 清理所有正在使用的资源。
  57. /// </summary>
  58. protected override void Dispose( bool disposing )
  59. {
  60. if( disposing )
  61. {
  62. if(components != null)
  63. {
  64. components.Dispose();
  65. }
  66. }
  67. base.Dispose( disposing );
  68. }
  69. #region Windows 窗体设计器生成的代码
  70. /// <summary>
  71. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  72. /// 此方法的内容。
  73. /// </summary>
  74. private void InitializeComponent()
  75. {
  76. this.components = new System.ComponentModel.Container();
  77. System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(WareDataManage));
  78. this.dgrd_WareData = new System.Windows.Forms.DataGrid();
  79. this.toolBar1 = new System.Windows.Forms.ToolBar();
  80. this.tbarBtnSave = new System.Windows.Forms.ToolBarButton();
  81. this.tbarBtnDelete = new System.Windows.Forms.ToolBarButton();
  82. this.imageList1 = new System.Windows.Forms.ImageList(this.components);
  83. this.groupBox1 = new System.Windows.Forms.GroupBox();
  84. this.label1 = new System.Windows.Forms.Label();
  85. this.txt_WareWord = new System.Windows.Forms.TextBox();
  86. this.btn_Search = new System.Windows.Forms.Button();
  87. ((System.ComponentModel.ISupportInitialize)(this.dgrd_WareData)).BeginInit();
  88. this.groupBox1.SuspendLayout();
  89. this.SuspendLayout();
  90. // 
  91. // dgrd_WareData
  92. // 
  93. this.dgrd_WareData.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
  94. | System.Windows.Forms.AnchorStyles.Left) 
  95. | System.Windows.Forms.AnchorStyles.Right)));
  96. this.dgrd_WareData.CaptionVisible = false;
  97. this.dgrd_WareData.DataMember = "";
  98. this.dgrd_WareData.HeaderForeColor = System.Drawing.SystemColors.ControlText;
  99. this.dgrd_WareData.Location = new System.Drawing.Point(0, 74);
  100. this.dgrd_WareData.Name = "dgrd_WareData";
  101. this.dgrd_WareData.Size = new System.Drawing.Size(720, 352);
  102. this.dgrd_WareData.TabIndex = 3;
  103. this.dgrd_WareData.DoubleClick += new System.EventHandler(this.dgrd_WareData_DoubleClick);
  104. // 
  105. // toolBar1
  106. // 
  107. this.toolBar1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
  108. this.toolBar1.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
  109. this.tbarBtnSave,
  110. this.tbarBtnDelete});
  111. this.toolBar1.DropDownArrows = true;
  112. this.toolBar1.ImageList = this.imageList1;
  113. this.toolBar1.Location = new System.Drawing.Point(0, 0);
  114. this.toolBar1.Name = "toolBar1";
  115. this.toolBar1.ShowToolTips = true;
  116. this.toolBar1.Size = new System.Drawing.Size(720, 29);
  117. this.toolBar1.TabIndex = 4;
  118. this.toolBar1.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar1_ButtonClick);
  119. // 
  120. // tbarBtnSave
  121. // 
  122. this.tbarBtnSave.ImageIndex = 0;
  123. this.tbarBtnSave.ToolTipText = "保存修改";
  124. // 
  125. // tbarBtnDelete
  126. // 
  127. this.tbarBtnDelete.ImageIndex = 1;
  128. this.tbarBtnDelete.ToolTipText = "删除数据";
  129. // 
  130. // imageList1
  131. // 
  132. this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
  133. this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
  134. this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
  135. // 
  136. // groupBox1
  137. // 
  138. this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
  139. | System.Windows.Forms.AnchorStyles.Right)));
  140. this.groupBox1.Controls.Add(this.label1);
  141. this.groupBox1.Controls.Add(this.txt_WareWord);
  142. this.groupBox1.Controls.Add(this.btn_Search);
  143. this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
  144. this.groupBox1.Location = new System.Drawing.Point(1, 22);
  145. this.groupBox1.Name = "groupBox1";
  146. this.groupBox1.Size = new System.Drawing.Size(718, 50);
  147. this.groupBox1.TabIndex = 4;
  148. this.groupBox1.TabStop = false;
  149. // 
  150. // label1
  151. // 
  152. this.label1.Location = new System.Drawing.Point(179, 22);
  153. this.label1.Name = "label1";
  154. this.label1.Size = new System.Drawing.Size(64, 16);
  155. this.label1.TabIndex = 5;
  156. this.label1.Text = "商品拼音:";
  157. // 
  158. // txt_WareWord
  159. // 
  160. this.txt_WareWord.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
  161. | System.Windows.Forms.AnchorStyles.Right)));
  162. this.txt_WareWord.Location = new System.Drawing.Point(267, 18);
  163. this.txt_WareWord.Name = "txt_WareWord";
  164. this.txt_WareWord.Size = new System.Drawing.Size(200, 21);
  165. this.txt_WareWord.TabIndex = 1;
  166. this.txt_WareWord.Text = "";
  167. // 
  168. // btn_Search
  169. // 
  170. this.btn_Search.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
  171. this.btn_Search.Location = new System.Drawing.Point(491, 17);
  172. this.btn_Search.Name = "btn_Search";
  173. this.btn_Search.Size = new System.Drawing.Size(48, 24);
  174. this.btn_Search.TabIndex = 2;
  175. this.btn_Search.Text = "查询";
  176. this.btn_Search.Click += new System.EventHandler(this.btn_Search_Click);
  177. // 
  178. // WareDataManage
  179. // 
  180. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  181. this.ClientSize = new System.Drawing.Size(720, 421);
  182. this.Controls.Add(this.toolBar1);
  183. this.Controls.Add(this.groupBox1);
  184. this.Controls.Add(this.dgrd_WareData);
  185. this.Name = "WareDataManage";
  186. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  187. this.Text = "【商品信息维护】";
  188. ((System.ComponentModel.ISupportInitialize)(this.dgrd_WareData)).EndInit();
  189. this.groupBox1.ResumeLayout(false);
  190. this.ResumeLayout(false);
  191. }
  192. #endregion
  193. //-----------设置表格格式----------
  194. private void DataGridStateControl(bool blReadOnly)
  195. {
  196. DataGridTableStyle ts = new DataGridTableStyle();
  197. ts.AlternatingBackColor = Color.LightGray;
  198. ts.MappingName = this.ds.Tables[0].TableName;
  199. ts.AllowSorting = false;
  200. int numCols = this.ds.Tables[0].Columns.Count;
  201. for (int i = 0;i< numCols;i++)//根据DataTable中的数据类型设置表格的样式
  202. {
  203. if (blReadOnly == true)
  204. {
  205. if ( i == 4 )//先为【单位】字段添加下拉列表框
  206. {
  207. DataTable tempTable = new DataTable();
  208. tempTable.Columns.Add();
  209. object[] rowValues = new object[] {"包","瓶","盒","带","箱"};
  210. for (int j=0;j<5;j++)
  211. {
  212. tempTable.Rows.Add(tempTable.NewRow());
  213. tempTable.Rows[j][0] = rowValues[j];
  214. }
  215. DataGridComboBoxColumn aComboBoxColumn = new DataGridComboBoxColumn(tempTable,0,0);
  216. aComboBoxColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  217. aComboBoxColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  218. aComboBoxColumn.NullText = "";
  219. ts.GridColumnStyles.Add(aComboBoxColumn);
  220. }
  221. else//设置表格样式,如果不是供选择,则可以选中表中的一个单元
  222. {
  223. DataGridTextBoxColumn aColumnTextColumn = new DataGridTextBoxColumn();
  224. aColumnTextColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  225. aColumnTextColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  226. aColumnTextColumn.NullText = "";
  227. aColumnTextColumn.Format = "F";
  228. ts.GridColumnStyles.Add(aColumnTextColumn);
  229. }
  230. }
  231. else//如果是供双击选择商品名称,则单击任意一个单元都会选中整行
  232. {
  233. DataGridNoActiveCellColumn aColumnTextColumn = new DataGridNoActiveCellColumn();
  234. aColumnTextColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  235. aColumnTextColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  236. aColumnTextColumn.NullText = "";
  237. aColumnTextColumn.Format = "F";
  238. ts.GridColumnStyles.Add(aColumnTextColumn);
  239. }
  240. }
  241. this.dgrd_WareData.TableStyles.Add(ts);
  242. }
  243. //--------根据商品拼音编码查询商品-------------
  244. private void btn_Search_Click(object sender, System.EventArgs e)
  245. {
  246. string strSpellWord = this.txt_WareWord.Text.Trim();
  247. string tempStrSQL = "select * from 商品清单 where 拼音编码 like '" + strSpellWord + "%'";
  248. this.link.SelectDataBase(tempStrSQL,sendTableName);
  249. }
  250. //--------------对数据的修改,保存等操作----------------
  251. private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
  252. {
  253. if (e.Button.ToolTipText == "保存修改")//保存对数据所作的修改
  254. {
  255. try
  256. {
  257. int row = this.dgrd_WareData.CurrentCell.RowNumber;
  258. //将当前所在行往下移动一行,为便于实现同步保存
  259. //(否则会出现修改的最后一行无法保存,因为它还处于编辑状态)
  260. this.dgrd_WareData.CurrentCell = new DataGridCell(row+1,0); 
  261. if (this.ds.HasChanges())
  262. {
  263. this.link.UpdateDataBase(this.ds.GetChanges(),sendTableName);
  264. MessageBox.Show("数据修改成功!","信息");
  265. }
  266. else
  267. {
  268. MessageBox.Show("没有需要修改的数据!");
  269. return;
  270. }
  271. }
  272. catch
  273. {
  274. MessageBox.Show("数据保存失败,请确认所有信息输入完整且正确!","提示");
  275. return;
  276. }
  277. }
  278. if (e.Button.ToolTipText == "删除数据")//删除某条数据
  279. {
  280. if (MessageBox.Show("确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes)
  281. {
  282. int intRowNumber = this.dgrd_WareData.CurrentCell.RowNumber;
  283. try
  284. {
  285. this.ds.Tables[0].Rows[intRowNumber].Delete();
  286. //此处传入只包含被改动过的DataRow的DataSet,减少更新数据量,提高程序性能
  287. this.link.UpdateDataBase(this.ds.GetChanges(),sendTableName);
  288. MessageBox.Show("数据删除成功!","信息");
  289. }
  290. catch
  291. {
  292. MessageBox.Show("该数据不能删除!","提示");
  293. string tempStrSQL = "select * from " + sendTableName;
  294. this.link.SelectDataBase(tempStrSQL,sendTableName);
  295. return;
  296. }
  297. }
  298. }
  299. }
  300. //------------其他窗体调用商品信息窗体时,双击选择商品信息--------------
  301. private void dgrd_WareData_DoubleClick(object sender, System.EventArgs e)
  302. {
  303. if (this.dgrd_WareData.ReadOnly == true) //判断如果是在销售单或者进货单中生成的窗体则响应DataGrid的双击事件
  304. {
  305. int intCurrentRowNumber = this.dgrd_WareData.CurrentCell.RowNumber;
  306. string sendWareID,sendWareName,sendWareUnit;
  307. sendWareID = this.dgrd_WareData[intCurrentRowNumber,0].ToString().Trim();//保存商品编号
  308. sendWareName = this.dgrd_WareData[intCurrentRowNumber,3].ToString().Trim();//保存商品名
  309. sendWareUnit = this.dgrd_WareData[intCurrentRowNumber,4].ToString().Trim();//保存商品单位
  310. string [] sendArray = new string [] {sendWareID,sendWareName,sendWareUnit};
  311. if (blSellTableShow == true) //判断当前是哪个表为当前表(销售单还是售货单)
  312. {
  313. SellTable.inputDataGridArray[0] = sendArray[0];
  314. SellTable.inputDataGridArray[1] = sendArray[1];
  315. SellTable.inputDataGridArray[2] = sendArray[2];
  316. }
  317. else
  318. {
  319. StockTable.inputDataGridArray[0] = sendArray[0];
  320. StockTable.inputDataGridArray[1] = sendArray[1];
  321. StockTable.inputDataGridArray[2] = sendArray[2];
  322. }
  323. this.Close();
  324. }
  325. }
  326. //---------如果是在双击选择商品状态,则表格为只读-------------
  327. public void setDataGridReadOnly(bool blInSell)
  328. {
  329. this.dgrd_WareData.ReadOnly = true;
  330. if (blInSell == true)
  331. blSellTableShow = true;
  332. else
  333. blSellTableShow = false;
  334. }
  335. }
  336. }