📄 selltable.cs
字号:
this.doubleClicked();
}
private void dgrd_SellTable_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
//获取当前点击鼠标时的时间
DataGrid myGrid = (DataGrid)sender;
System.Windows.Forms.DataGrid.HitTestInfo myHitTest;
// Use the DataGrid control's HitTest method with the x and y properties.
myHitTest = this.dgrd_SellTable.HitTest(e.X,e.Y);
if ( myHitTest.Type == System.Windows.Forms.DataGrid.HitTestType.Cell )
gridMouseDownTime = DateTime.Now;
}
private void dgrd_SellTable_CurrentCellChanged(object sender, System.EventArgs e)
{
this.selectWareMessage();
this.controlCalculate();
}
//------------处理鼠标在dataGrid上的单击事件-----------
private void TextBoxMouseDownHandler(object sender, MouseEventArgs e )
{
//第一个判断条件:在单元格的textbox中的双击(即单击DataCell,使它获得焦点后,然后再响应该Cell中的双击事件)
//第二个判断条件:DataGrid 的 DoubleClick(直接双击Cell就响应双击事件,无须先单击Cell,使它获得焦点,然后再响应双击事件)
//判断时间间隔是否小于控制面板中所定义的双击间隔时间
if( e.Button == MouseButtons.Left && e.Clicks == 2 || DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))
{
this.doubleClicked();
}
}
//------------在表格中双击,创建窗体以供选择货物或选择仓库-------------
private void doubleClicked()
{
if (this.dgrd_SellTable.CurrentCell.ColumnNumber == 0 )//若鼠标单击的是第一列,则为选择货物
{
this.dgrd_SellTable[dgrd_SellTable.CurrentCell.RowNumber,3] = inputDataGridArray[3] = "";
WareDataManage newFrm = new WareDataManage(false);
newFrm.setDataGridReadOnly(true);
newFrm.ShowDialog();
setWareData();
SendKeys.Send("{Tab}");//向活动应用程序发送Tab键,跳到下一控件(此处为下一格)
}
if (this.dgrd_SellTable.CurrentCell.ColumnNumber == 3)//选择仓库
{
string sendStrSQL = "select 仓库,库存数量 from 库存库 where 货号 = '" + dgrd_SellTable[dgrd_SellTable.CurrentCell.RowNumber,0].ToString().Trim() + "' order by 仓库 ASC";
SelectStorage newFrm = new SelectStorage(sendStrSQL);
newFrm.ShowDialog();
setStorageData();
//赋值完毕后跳向下一行
this.dgrd_SellTable.CurrentCell = new DataGridCell(this.dgrd_SellTable.CurrentCell.ColumnNumber+1,0);
}
}
//--------------向数据库提交数据--------------
private void clickedSaveIcon()
{
try
{
//注意:必须先删除进货单明细表中的数据,然后才能再删除进货单中的数据
string sendSQL = "delete 销售单明细";
this.link.UpdateDataBase(sendSQL); //删除进货单明细中的数据
sendSQL = "delete 销售单";
this.link.UpdateDataBase(sendSQL); //删除进货单中的数据
//向销售单中写入数据
int intMaxSellNumberID= 0;
sendSQL = "select 编号 from 销售单历史";
//从销售单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
DataTable intNumberTable = this.link.SelectDataBase(sendSQL);
for (int i=0;i<intNumberTable.Rows.Count;i++)
{
if (intMaxSellNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
{
intMaxSellNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
}
}
sendSQL = "select 编号 from 销售单";
//从销售单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
intNumberTable = this.link.SelectDataBase(sendSQL);
for (int i=0;i<intNumberTable.Rows.Count;i++)
{
if (intMaxSellNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
{
intMaxSellNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
}
}
intMaxSellNumberID++;
string strClientID = this.cmb_ClientID.Items[0].ToString().Trim();
string strSellDate = this.txt_SellDate.Text.Trim();
string strOperator = this.cmb_Oprater.SelectedItem.ToString().Trim();
string strMaker = this.txt_Maker.Text.Trim();
decimal decTotalCount = Decimal.Parse(this.txt_TotalCount.Text.Trim());
decimal decNoTax = Decimal.Parse(this.txt_NoTax.Text.Trim());
decimal decTax =Decimal.Parse(this.txt_Tax.Text.Trim());
string sendValues = "('" + intMaxSellNumberID +"','"+ strClientID +"','"+ strSellDate +"','"+ strOperator +"','"+
strMaker +"','"+ decTotalCount +"','"+ decNoTax +"','"+ decTax + "')";
sendSQL = "insert 销售单 (编号,客户编号,销售日期,业务员,制单人,税价合计,不含税价,税额) values " + sendValues;
this.link.UpdateDataBase(sendSQL);
//向销售单明细中写入数据
int intMaxNumberID = 0;
sendSQL = "select 编号 from 销售单明细历史";
//从销售单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
intNumberTable = this.link.SelectDataBase(sendSQL);
for (int i=0;i<intNumberTable.Rows.Count;i++)
{
if (intMaxNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
{
intMaxNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
}
}
sendSQL = "select 编号 from 销售单明细";
//从销售单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
intNumberTable = this.link.SelectDataBase(sendSQL);
for (int i=0;i<intNumberTable.Rows.Count;i++)
{
if (intMaxNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
{
intMaxNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
}
}
for (int row=0;row<this.newTable.Rows.Count;row++)
{
//首先判断表中的下一行数据是否为空,如果是则返回,以免因往数据库中写入空行而出错
if(this.newTable.Rows[row][0].ToString() == "")
{
sendSQL = "delete from 销售单 where 编号 = '" + intMaxSellNumberID + "'";
this.link.UpdateDataBase(sendSQL); //首先删除这次在销售单中加入的数据
break;
}
else
{
intMaxNumberID++;
string strWareID = this.dgrd_SellTable[row,0].ToString().Trim();
decimal strWareCount = Decimal.Parse(this.dgrd_SellTable[row,1].ToString().Trim());
decimal strWarePrice = Decimal.Parse(this.dgrd_SellTable[row,2].ToString().Trim());
string strStorageID = this.dgrd_SellTable[row,3].ToString().Trim();
sendValues = "('" + intMaxNumberID +"','"+intMaxSellNumberID +"','"+ strWareID +"','"+ strWareCount +"','"+ strWarePrice +"','"+
decTotalCount +"','"+ 17 +"','"+ decNoTax +"','"+ decTax +"','"+ strStorageID + "')";
sendSQL = "insert 销售单明细 (编号,销售单号,货号,销售数量,销售价,税价合计,税率,不含税价,税额,仓库) values " + sendValues;
this.link.UpdateDataBase(sendSQL);
}
}
MessageBox.Show("数据保存成功!","信息");
}
catch
{
MessageBox.Show("数据保存失败,请确认所有信息输入完整且正确!","提示");
return;
}
}
//---------将销售单数据存入历史记录---------
private void clickedTrashIcon()
{
try
{
if (MessageBox.Show("确实要保存为历史记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
this.link.UpdateDataBase("exec sf_销售单"); //调用存储过程
//清除供货商信息
this.cmb_ClientID.Items[0] = "";
this.txt_Company.Text = "";
//清除底部金额及税款信息
this.txt_TotalCount.Text = "0.00";
this.txt_NoTax.Text = "0.00";
this.txt_Tax.Text = "0.00";
//清除当前DataGrid中的所有数据
newTable.Clear();
//加入空行保证newTable中不为空,否则删除所有数据行后保存数据和MouseUp函数将引发异常出错
newTable.Rows.Add(newTable.NewRow());
MessageBox.Show("数据成功存入历史表!","信息");
}
}
catch
{
MessageBox.Show("数据存入历史表时出错,请检查数据库!","提示");
}
}
//------------将所选择的商品信息读入表格中------------
private void selectWareMessage()
{
int intCurrentRowNumber = this.dgrd_SellTable.CurrentCell.RowNumber;
//判断何时需要检索数据库的商品清单,读取商品信息(以免操作数据库次数过多,影响程序性能)
if (this.dgrd_SellTable[intCurrentRowNumber,0].ToString() != "")
{
string strSearchWord = this.dgrd_SellTable[this.dgrd_SellTable.CurrentCell.RowNumber,0].ToString().Trim();
string sendSQL = "select 货号,品名,单位 from 商品清单 where 货号 = '" + strSearchWord + "'";
DataTable tempDataTable = this.link.SelectDataBase(sendSQL);
if (tempDataTable.Rows.Count>0)
{
inputDataGridArray[0] = tempDataTable.Rows[0][0].ToString().Trim();
inputDataGridArray[1] = tempDataTable.Rows[0][1].ToString().Trim();
inputDataGridArray[2] = tempDataTable.Rows[0][2].ToString().Trim();
this.setWareData();
}
//如果从数据库中没有检索出任何数据
else
{
//inputDataGridArray[0]赋值为当前输入的值,方便用户再次修改输入
inputDataGridArray[0] = this.dgrd_SellTable[intCurrentRowNumber,0].ToString().Trim();
inputDataGridArray[1] = "";
inputDataGridArray[2] = "";
this.setWareData();
}
}
}
//------计算总价,税额等---------
private void controlCalculate()
{
int intCurrentRowNumber = this.dgrd_SellTable.CurrentCell.RowNumber;
string strWareCount = this.dgrd_SellTable[intCurrentRowNumber,1].ToString();
string strWarePrice = this.dgrd_SellTable[intCurrentRowNumber,2].ToString();
string strTotalCounter = this.dgrd_SellTable[intCurrentRowNumber,6].ToString();
//当销售价和销售数量不为空,并且总金额为空时将当前光标移到下一行的开始处,以便DataTable依据表达式自动计算DataColumn的值
if (strWareCount != "" && strWarePrice != "" && strTotalCounter=="")
{
this.dgrd_SellTable.CurrentCell = new DataGridCell(intCurrentRowNumber+1,0);
}
//为底部三个文本框计算总金额
decimal intTotalCount = 0;
decimal intNoTax = 0;
decimal intTax = 0;
//首先判断列是否为空
object obj = newTable.Compute("SUM (金额)","");
if (obj.GetType().ToString() != "System.DBNull")
{
intTotalCount = (decimal)this.newTable.Compute("SUM (金额)","");
intNoTax = (decimal)this.newTable.Compute("SUM (不含税额)","");
intTax = (decimal)this.newTable.Compute("SUM (税额)","");
}
this.txt_TotalCount.Text = intTotalCount.ToString("N");
this.txt_NoTax.Text = intNoTax.ToString("N");
this.txt_Tax.Text = intTax.ToString("N");
}
private void SellTable_Load(object sender, System.EventArgs e)
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -