计算datagrid中的值

worldofmy 2006-11-11 09:40:15
datagrid中有单价,数量,金额这3列 要求在输入单价和数量之后自动计算值并放到金额这一列,该怎么实现?我用的是vs.net 2003 应该怎么样添加单元格改变事件 右键控件 弹出后的菜单没有“添加事件处理程序”这一项
...全文
128 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldofmy 2006-11-11
  • 打赏
  • 举报
回复
谢谢各位
worldofmy 2006-11-11
  • 打赏
  • 举报
回复
呵呵 楼上两位都太厉害了 只不过代码太多 都看花眼了 呵呵 谢谢各位给的详细解答 我再试试啊 不过我是直接在form中拖上一个datagrid 然后就不管了 (也不会设置) 然后填充一个dataset 然后 datagrid1.datasource=ds,datagrid1.setdatabinding(ds,tabel)就这样啊
yao991118 2006-11-11
  • 打赏
  • 举报
回复
我还说你看明白了给你说下面的呢!!
jacobwc 2006-11-11
  • 打赏
  • 举报
回复
一个绑定例子
//----------绑定数据并设置表格各列的属性----------
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);
}
jacobwc 2006-11-11
  • 打赏
  • 举报
回复
不用定位单元格
不知道你是怎么样绑定数据的
单元格是什么类型的在你增加单元格就知道了
yourDataTable.Columns.Add("单价",typeof(decimal));
yourDataTable.Columns.Add("数量",typeof(decimal));

至于事件
可以在yourdatagrid的属性查看事件,一个雷电附号的样子
下面有很多事件
你要增加哪一个就是对应的事件空白栏双击就行
不知道说清楚了没

worldofmy 2006-11-11
  • 打赏
  • 举报
回复
哎 如果能当面指点就好了
要能定位单元格 然后把两个单元格的内容* 然后附值到第三个单元格也行 但是一直不知道该怎么定位单元格 单元格的值又是什么 是什么类型的 怎么样附值? 这样可以吗 如果可以 该怎么写? 并且问一个初级问题 应该怎么样添加自带的事件处理程序 比如 应该怎么样添加单元格改变事件 右键控件 弹出后的菜单没有“添加事件处理程序”这一项
jacobwc 2006-11-11
  • 打赏
  • 举报
回复

增加一计算列不就OK了
不用这么多事件之类
yourDataTable.Columns.Add("金额",typeof(decimal),"单价*数量");
this.dataGrid1.DataSource = yourDataTable;//绑定
当然前提是你的单价列和数量列的列名为“单价”“数量”
worldofmy 2006-11-11
  • 打赏
  • 举报
回复
楼上果然高手 这样的代码也能写出来 可是小弟太菜 看不懂啊 5555555555555555
yao991118 2006-11-11
  • 打赏
  • 举报
回复
看明白没有?
yao991118 2006-11-11
  • 打赏
  • 举报
回复
然后创建DATAGRID的时候为:
private MyDataGrid dgBillNote;
this.dgBillNote = new 项目.程序.MyDataGrid();
yao991118 2006-11-11
  • 打赏
  • 举报
回复
那么就简单多了:
你先要将你的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);
}
}
worldofmy 2006-11-11
  • 打赏
  • 举报
回复
高手指点 急..............出汗了 !!!
worldofmy 2006-11-11
  • 打赏
  • 举报
回复
js我不会啊 我懂的编程知识很少 做的是windows程序
yao991118 2006-11-11
  • 打赏
  • 举报
回复
要开你做的是windows程序还是web程序
pkkfaii 2006-11-11
  • 打赏
  • 举报
回复
用js做吧。。不刷新。。后台做的话 要刷新的。。在datagrid 的ItemDataBound事件里做
基于EasyUI 官方的帮助。 Application 使用easyUI创建一个CRUD的应用 使用easyUI创建一个CRUD DataGrid 使用easyUI展开行详细编辑form创建CRUD应用 使用jQuery easyUI 创建一个 RSS Feed阅读器 Drag and Drop easyUI 基础的拖动和放置 使用easyUI创建一个拖放的购物车 使用easyUI创建一个课程表 Menu and Button 使用easyUI创建简单的菜单 使用easyUI创建Link Button 使用easyUI创建Menu Button 使用easyUI创建Split Button Layout 使用easyUI创建一个border layout在你的web页面 使用easyUI在panel创建复杂布局 使用easyUI创建折叠面板 使用easyUI创建Tabs标签 使用easyui创建tabs组件和动态添加 使用easyUI创建一个自动播放的tabs 使用easyUI创建XP风格左侧面板 DataGrid 使用easyUI转换HTML table到datagrid 使用easyUI给datagrid添加pagination 使用easyUI添加查询功能在datagrid 使用easyUI 添加toolbar到datagrid 使用easyUI 创建复杂的toolbar到datagrid 使用easyUI 为datagrid冻结列 使用easyUI 动态改变datagrid的columns 使用easyUI 格式化datagrid列 easyUI 添加排序到datagrid easyUI 自定义排序datagrid easyUI 添加CheckBox选择到DataGrid easyUI自定义DataGrid分页栏 启用DataGrid行内编辑器 继承扩展DataGrid的editors easyUI在可编辑的datagrid计算两列的 easyUI合并DataGrid单元格 easyUI为datagrid创建自定义视图 easyUI datagrid显示摘要信息在页脚 easyUI 根据一些条件改变DataGrid 行背景颜色 easyUI 创建一个 Property Grid easyUI 展开DataGrid里面的行显示详细信息 easyUI 在主datagrid上创建子datagrid Window easyUI 我的第一个window easyUI 自定义window工具 easyUI window和布局 easyUI 创建Dialog对话框 easyUI Dialog自定义Toolbar和button Tree easyUI 从标记创建Tree easyUI 创建异步Tree easyUI 附加tree节点到tree easyUI 创建Tree和复选框Tree Node easyUI 拖动(Drag)和放置(Drop)Tree easyUI 加载parent/child节点到tree 转换tree标准格式数据 easyUI 创建一个基础的TreeGrid easyUI 创建复杂TreeGrid Form easyUI 通过ajax的方式提交Form easyUI 添加ComboTree 字段到一个 form easyui Form验证 easyUI 格式化ComboBox easyui 过滤ComboGrid 扩展 easyui DWR加载 easyUI 主题
语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox的行与列的函数.txt 计算控件文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案一个项目的xml注释在另一个项目不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET得到计算机硬件信息的一些功能.txt 在MapX响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt 辅助软件 aspx/asp代码生成器

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧