datagrid中有单价,数量,金额这3列 要求在输入单价和数量之后自动计算值并放到金额这一列,该怎么实现?我用的是vs.net 2003 应该怎么样添加单元格改变事件 右键控件 弹出后的菜单没有“添加事件处理程序”这一项
解决方案 »
- C#中线程传递参数能用ref吗?
- 怎样分别得到两个输出参数
- 程序中使用的timer数量问题?
- sql语句的问题!!
- c# 类 默认构造函数
- 無法存取"CDONTS.Newmail"物件,或是"無法存取CDO.Message物件"的錯誤
- Net Practice 团队招募帖
- 毕设中遇到一个头痛环节:要将大量本地邮件(作为语料,eml格式)中解码后的转数据存入txt文件中,郁闷,请大家帮助
- 【求助】我要编写一个程序,把文件夹内所有的.aspx文件中的中文替换成英文
- 请问在C#中如何将string变量转换成Datetime类型呀!
- 关于Hashtable容器,希望高手,孟子进来指导,在线等啊。。。
- 如何让DataGridView不抛出一个异常
你先要将你的DATAGRID改写
public class MyDataGrid : DataGrid
{
private const int WM_KEYDOWN = 0x100;
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if(msg.WParam.ToInt32() == (int) Keys.Enter)
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
} public override bool PreProcessMessage( ref Message msg )
{
Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete)
{
if(MessageBox.Show("确认删除?", "确认", MessageBoxButtons.YesNo) == DialogResult.No)
return true;
}
return base.PreProcessMessage(ref msg);
}
}
private MyDataGrid dgBillNote;
this.dgBillNote = new 项目.程序.MyDataGrid();
增加一计算列不就OK了
不用这么多事件之类
yourDataTable.Columns.Add("金额",typeof(decimal),"单价*数量");
this.dataGrid1.DataSource = yourDataTable;//绑定
当然前提是你的单价列和数量列的列名为“单价”“数量”
不知道你是怎么样绑定数据的
单元格是什么类型的在你增加单元格就知道了
yourDataTable.Columns.Add("单价",typeof(decimal));
yourDataTable.Columns.Add("数量",typeof(decimal));至于事件
可以在yourdatagrid的属性查看事件,一个雷电附号的样子
下面有很多事件
你要增加哪一个就是对应的事件空白栏双击就行
不知道说清楚了没
//----------绑定数据并设置表格各列的属性----------
private void DataGridStateControl()
{
newTable = new DataTable();
newTable.Columns.Add("生产批次",typeof(string)); //0
newTable.Columns.Add("报废数",typeof(decimal)); //4
newTable.Columns.Add("计划数",typeof(string)); //5
newTable.Columns.Add("客户名称",typeof(string)); //6
newTable.Columns.Add("单价",typeof(decimal)); //10
newTable.Columns.Add("单位面积",typeof(decimal)); //11
newTable.Columns.Add("产值元",typeof(decimal),"单价*生产数"); //运用DataTable的表达式自动运算
newTable.Columns.Add("产量m2",typeof(decimal),"单位面积*生产数");//-单位面积*报废数
this.dataGrid1.DataSource = newTable;
newTable.Rows.Add(newTable.NewRow()); //向表中添加一行
DataGridTableStyle ts = new DataGridTableStyle();//设置表格模式
DataGridTextBoxColumn aColumnTextColumn;
ts.AllowSorting = false;
ts.AlternatingBackColor = Color.LightGray; //交替显示
ts.MappingName = newTable.TableName;
int numCols = newTable.Columns.Count;
for (int i = 0;i< numCols;i++)
{
aColumnTextColumn = new DataGridTextBoxColumn();
if (i==7)
{
aColumnTextColumn.Width = 100;
aColumnTextColumn.ReadOnly=true;
}
aColumnTextColumn.MappingName = newTable.Columns[i].ColumnName;
aColumnTextColumn.HeaderText = newTable.Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
aColumnTextColumn.Format = "N"; //设置为数字格式显示
ts.GridColumnStyles.Add(aColumnTextColumn);
}
this.dataGrid1.TableStyles.Add(ts);
}