当列4值变时,列6值=列4*列5。该怎么做呀。谢谢各位指点。

解决方案 »

  1.   


    //在EditingControlShowing为单元格设置事件处理程序
    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        DataGridViewTextBoxEditingControl te =(DataGridViewTextBoxEditingControl)e.Control;
        te.Name = "列名";
        te.TextChanged += new EventHandler(te_TextChanged);
    }
    然后就可以在te_TextChanged处理计算其他列了。
      

  2.   

    不需要事件,设置列的Expression属性就可以了。DataTable dt = new DataTable();
    dt.Columns.Add("col1", typeof(int));
    dt.Columns.Add("col2", typeof(int));
     
    dt.Rows.Add(new object[] {2,3 });
    dt.Rows.Add(new object[] { 11, 2 });
    //在原表基础上增加表达式列
    dt.Columns.Add("col12Val", typeof(int));
    dt.Columns[2].Expression = "col1*col2";
    dataGridView1.DataSource = dt;
      

  3.   

    3楼的方法比我好。确实是,设置列的计算表达式。DataColumn.Expression 属性 
    获取或设置表达式,用于筛选行、计算列中的值或创建聚合列。MSDN的例子:
        DataTable table = new DataTable ();    // Create the first column.
        DataColumn priceColumn = new DataColumn();
        priceColumn.DataType = System.Type.GetType("System.Decimal");
        priceColumn.ColumnName = "price";
        priceColumn.DefaultValue = 50;    // Create the second, calculated, column.
        DataColumn taxColumn = new DataColumn();
        taxColumn.DataType = System.Type.GetType("System.Decimal");
        taxColumn.ColumnName = "tax";
        taxColumn.Expression = "price * 0.0862";    // Create third column.
        DataColumn totalColumn = new DataColumn();
        totalColumn.DataType = System.Type.GetType("System.Decimal");
        totalColumn.ColumnName = "total";
        totalColumn.Expression = "price + tax";