将公式单元格应用于DataGridview

Ștefan Blaga

我想在中添加公式单元格DataGridView有什么习惯DataGridView可以做到这一点吗?

例:

grid[4, column].Text = string.Format("=MAX({0}6:{0}{1})", columnAsString, grid.RowCount);
雷扎·阿盖伊(Reza Aghaei)

是否有任何自定义DataGridView可以做到这一点?

脱离主题,但是如果您正在寻找自定义控件,请查看Free .NET Spreadsheet Control它还支持公式

如果编写计算代码适合您

如果编写计算代码是您的选择,则要基于其他一些单元格的值来计算单元格的值,可以使用CellFormattingevent ofDataGridView并将计算逻辑放在此处。还应处理CellEndEdit并调用InvalidateCellInvalidate在参考单元格中的每个单元格之后强制更新该单元格的值。

这是一个例子:

void Form1_Load(object sender, EventArgs e)
{
    Random r = new Random();
    var dt = new DataTable();
    dt.Columns.Add("A", typeof(int));
    dt.Columns.Add("B", typeof(int));
    for (int i = 0; i < 10; i++)
        dt.Rows.Add(r.Next(100));
    grid.DataSource = dt;
    grid.CellFormatting += grid_CellFormatting;
    grid.CellEndEdit += grid_CellEndEdit;
}
void grid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    grid.Invalidate();
}
void grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    var grid = sender as DataGridView;
    var parameterColumnName = "A";       //Parameter column name
    var start = 0;                       //Start row index for formula
    var end = grid.RowCount - 1;         //End row index for formula
    var resultRowIndex = 0;              //Result row index
    var resultColumnName = "B";          //Result column name
    if (e.RowIndex == resultRowIndex &&
        grid.Columns[e.ColumnIndex].Name == resultColumnName)
    {
        var list = Enumerable.Range(start, end - start + 1)
              .Select(i => grid.Rows[i].Cells[parameterColumnName].Value)
              .Where(x => x != null && x != DBNull.Value)
              .Cast<int>();
        if (list.Any())
            e.Value = list.Max();
    }
}

注意

该解决方案不仅限于DataTable,无论DataSource您使用哪种解决方案都可以使用,DataGridView并且可以在此解决方案中使用任何类型的数据源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将功能应用于单元格阵列中的每对单元格

将函数的单元格数组应用于值

Excel:SUM操作之前将公式应用于每个单元格

将单元格渲染应用于ag-grid后获取单元格值

如何执行while循环,将公式保留在单元格中并应用于整行?电子表格

DT根据单独的数据帧将背景色应用于单元格

Excel:使用多单元格数组公式将函数应用于一系列范围

如何使用VBA将Excel公式应用于动态范围的单元格?

数组公式VIa VBA应用于空白单元格产生错误

将公式应用于整个列时,保持单元格引用不变

将功能应用于Spark DataFrame中的所有单元格

Excel:将公式应用于另一个公式中列中的每个单元格

需要将公式应用于某些空白单元格

Excel公式将一个公式应用于引用调用和上方的单元格,并将另一个公式应用于下方的单元格

将公式仅应用于Google表格上的可见单元格(使用过滤器)

确定是否将条件格式应用于Office-js中的单元格或单元格范围

如何将函数应用于列的每个单元格?

将公式应用于列中的最后一个单元格

将公式应用于一系列单元格而无需拖放

仅将功能应用于突出显示的单元格

在Excel中进行循环(将公式应用于单元格范围)

VBA将条件格式应用于单元格

Excel将复杂的公式应用于现有单元格值,而无需复制/粘贴

HSSFCell setCellStyle 将样式应用于所有工作表的单元格而不是所选单元格

将公式应用于单元格块的 VBA Sub,最左边的列和标题行除外

将 IF 语句的结果应用于多个单元格

将公式应用于单元格范围,然后粘贴值

如何使用基于单元格内容的 RGB 颜色将条件格式应用于 Word 单元格

在 Excel/VBA 中,如何根据单元格值将公式应用于范围?