例如在DataGird 有这样几列商品编码(ResID)、单价(Price)、数量(Number)、总金额(Money)。
功能要求
1: 要求存储的是编码(ResID),但我要显示商品名称(ResName)这个字段在另一个表中,这一列的值
Value 为ResID,text 为ResName  ,也就是要实现一个setText功能。
2 :单价或数量修改时,总金额自动修改,要求是实时的显示出来,不是等保存更新以后才显示出来

解决方案 »

  1.   

    问问题,应先说明是在winForm中,还是在webForm中
      

  2.   

    DataGridTableStyle.MappingName = "ResID";
    DataGridTableStyle.HeaderText = "商品编码";
      

  3.   

    问题1:
    使用SELECT语句可以访问多个表,例如
    SELECT s.ResId,n.ResName,s.Price,s.Number,s.Money FROM Res1 AS s INNER JOIN Res2 as n ON s.ResId=n.ResId
    这里假设保存 商品编码(ResID)、单价(Price)、数量(Number)、总金额(Money)的表为Res1;保存 编码(ResID),商品名称(ResName)的表为Res2问题2:
    使用ADO.net通过1中的SELECT语句取得数据,并将数据保存到某DataTable(名为dtRes)之后,
    可以处理该DataTable的ColumnChanging事件。例如:
    //首先,添加事件
    dtRes.ColumnChanging += new DataColumnChangeEventHandler( Column_Changing );
    //再添加事件处理方法
    private void Column_Changing( object sender, DataColumnChangeEventArgs e )
    {
        if(e.Column.ColumnName=="Price" || e.Column.ColumnName=="Number")  //单价和数量的改变
        {
             //这里加入自己的校验代码,以确认用户输入的单价和数量是否符合要求
             //......
             //这里计算总数额(这里假设单价、数量、总数额都是decimal类型,且没有处理用户输入不正确的异常
             e.Row["Money"]=((decimal)e.Row["Price"]) * ((decimal)e.Row["Number"]);
        }
        else     //修改了其他列的数据
        {
             //....
        }
    }
      

  4.   

    我也碰到过,修改它的datasource.
      

  5.   

    你可以用一个下拉框来绑定,然后放到datagrid里面来实现保存的是id,显示的是名称!
    第二问题,我记得datagrid有一个方法当你离开某一个格子的时候触发的,在里面实现你要实现的功能!如果找不到的话,也可以自己写一个选中的列的方法来检测,当进入该格子的时候变一下变量,修改后改回来同样能实现!
      

  6.   

    请问如何把下拉框添加到dataGird中,怎样做,我很感兴趣 请详细介绍一下
      

  7.   

    请问如何把下拉框添加到dataGird中,怎样做,我很感兴趣 请详细介绍一下需要自己从DataGridTextBoxColumn派生一个类,比如DataGridComboBoxColumn。在http://www.syncfusion.com/Support/default.aspx的WinForms->DataGrid中有类似的实现代码,你可以去下载研究一下。