WareDataManage.cs
上传用户:ksd66jhda
上传日期:2013-04-03
资源大小:234k
文件大小: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. this.Load += new System.EventHandler(this.WareDataManage_Load);
  189. ((System.ComponentModel.ISupportInitialize)(this.dgrd_WareData)).EndInit();
  190. this.groupBox1.ResumeLayout(false);
  191. this.ResumeLayout(false);
  192. }
  193. #endregion
  194. //-----------设置表格格式----------
  195. private void DataGridStateControl(bool blReadOnly)
  196. {
  197. DataGridTableStyle ts = new DataGridTableStyle();
  198. ts.AlternatingBackColor = Color.LightGray;
  199. ts.MappingName = this.ds.Tables[0].TableName;
  200. ts.AllowSorting = false;
  201. int numCols = this.ds.Tables[0].Columns.Count;
  202. for (int i = 0;i< numCols;i++)//根据DataTable中的数据类型设置表格的样式
  203. {
  204. if (blReadOnly == true)
  205. {
  206. if ( i == 4 )//先为【单位】字段添加下拉列表框
  207. {
  208. DataTable tempTable = new DataTable();
  209. tempTable.Columns.Add();
  210. object[] rowValues = new object[] {"包","瓶","盒","带","箱"};
  211. for (int j=0;j<5;j++)
  212. {
  213. tempTable.Rows.Add(tempTable.NewRow());
  214. tempTable.Rows[j][0] = rowValues[j];
  215. }
  216. DataGridComboBoxColumn aComboBoxColumn = new DataGridComboBoxColumn(tempTable,0,0);
  217. aComboBoxColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  218. aComboBoxColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  219. aComboBoxColumn.NullText = "";
  220. ts.GridColumnStyles.Add(aComboBoxColumn);
  221. }
  222. else//设置表格样式,如果不是供选择,则可以选中表中的一个单元
  223. {
  224. DataGridTextBoxColumn aColumnTextColumn = new DataGridTextBoxColumn();
  225. aColumnTextColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  226. aColumnTextColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  227. aColumnTextColumn.NullText = "";
  228. aColumnTextColumn.Format = "F";
  229. ts.GridColumnStyles.Add(aColumnTextColumn);
  230. }
  231. }
  232. else//如果是供双击选择商品名称,则单击任意一个单元都会选中整行
  233. {
  234. DataGridNoActiveCellColumn aColumnTextColumn = new DataGridNoActiveCellColumn();
  235. aColumnTextColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  236. aColumnTextColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  237. aColumnTextColumn.NullText = "";
  238. aColumnTextColumn.Format = "F";
  239. ts.GridColumnStyles.Add(aColumnTextColumn);
  240. }
  241. }
  242. this.dgrd_WareData.TableStyles.Add(ts);
  243. }
  244. //--------根据商品拼音编码查询商品-------------
  245. private void btn_Search_Click(object sender, System.EventArgs e)
  246. {
  247. string strSpellWord = this.txt_WareWord.Text.Trim();
  248. string tempStrSQL = "select * from 商品清单 where 拼音编码 like '" + strSpellWord + "%'";
  249. this.link.SelectDataBase(tempStrSQL,sendTableName);
  250. }
  251. //--------------对数据的修改,保存等操作----------------
  252. private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
  253. {
  254. if (e.Button.ToolTipText == "保存修改")//保存对数据所作的修改
  255. {
  256. try
  257. {
  258. int row = this.dgrd_WareData.CurrentCell.RowNumber;
  259. //将当前所在行往下移动一行,为便于实现同步保存
  260. //(否则会出现修改的最后一行无法保存,因为它还处于编辑状态)
  261. this.dgrd_WareData.CurrentCell = new DataGridCell(row+1,0); 
  262. if (this.ds.HasChanges())
  263. {
  264. this.link.UpdateDataBase(this.ds.GetChanges(),sendTableName);
  265. MessageBox.Show("数据修改成功!","信息");
  266. }
  267. else
  268. {
  269. MessageBox.Show("没有需要修改的数据!");
  270. return;
  271. }
  272. }
  273. catch
  274. {
  275. MessageBox.Show("数据保存失败,请确认所有信息输入完整且正确!","提示");
  276. return;
  277. }
  278. }
  279. if (e.Button.ToolTipText == "删除数据")//删除某条数据
  280. {
  281. if (MessageBox.Show("确实要删除这条记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes)
  282. {
  283. int intRowNumber = this.dgrd_WareData.CurrentCell.RowNumber;
  284. try
  285. {
  286. this.ds.Tables[0].Rows[intRowNumber].Delete();
  287. //此处传入只包含被改动过的DataRow的DataSet,减少更新数据量,提高程序性能
  288. this.link.UpdateDataBase(this.ds.GetChanges(),sendTableName);
  289. MessageBox.Show("数据删除成功!","信息");
  290. }
  291. catch
  292. {
  293. MessageBox.Show("该数据不能删除!","提示");
  294. string tempStrSQL = "select * from " + sendTableName;
  295. this.link.SelectDataBase(tempStrSQL,sendTableName);
  296. return;
  297. }
  298. }
  299. }
  300. }
  301. //------------其他窗体调用商品信息窗体时,双击选择商品信息--------------
  302. private void dgrd_WareData_DoubleClick(object sender, System.EventArgs e)
  303. {
  304. if (this.dgrd_WareData.ReadOnly == true) //判断如果是在销售单或者进货单中生成的窗体则响应DataGrid的双击事件
  305. {
  306. int intCurrentRowNumber = this.dgrd_WareData.CurrentCell.RowNumber;
  307. string sendWareID,sendWareName,sendWareUnit;
  308. sendWareID = this.dgrd_WareData[intCurrentRowNumber,0].ToString().Trim();//保存商品编号
  309. sendWareName = this.dgrd_WareData[intCurrentRowNumber,3].ToString().Trim();//保存商品名
  310. sendWareUnit = this.dgrd_WareData[intCurrentRowNumber,4].ToString().Trim();//保存商品单位
  311. string [] sendArray = new string [] {sendWareID,sendWareName,sendWareUnit};
  312. if (blSellTableShow == true) //判断当前是哪个表为当前表(销售单还是售货单)
  313. {
  314. SellTable.inputDataGridArray[0] = sendArray[0];
  315. SellTable.inputDataGridArray[1] = sendArray[1];
  316. SellTable.inputDataGridArray[2] = sendArray[2];
  317. }
  318. else
  319. {
  320. StockTable.inputDataGridArray[0] = sendArray[0];
  321. StockTable.inputDataGridArray[1] = sendArray[1];
  322. StockTable.inputDataGridArray[2] = sendArray[2];
  323. }
  324. this.Close();
  325. }
  326. }
  327. //---------如果是在双击选择商品状态,则表格为只读-------------
  328. public void setDataGridReadOnly(bool blInSell)
  329. {
  330. this.dgrd_WareData.ReadOnly = true;
  331. if (blInSell == true)
  332. blSellTableShow = true;
  333. else
  334. blSellTableShow = false;
  335. }
  336. private void WareDataManage_Load(object sender, System.EventArgs e)
  337. {
  338. }
  339. }
  340. }