C# Winforms Gridview计算

C# Winforms Gridview计算,c#,winforms,devexpress,C#,Winforms,Devexpress,我有两列,所以当第一列单元格值包含“ok”时,将对第二列进行计算。如果它不包含“ok”,那么我不需要任何计算 代码可以工作,但不依赖于“ok”,不管单元格是否包含“ok”或其他内容 private void calculate() { if (gridView3.Columns["Status"] == gridView3.GetFocusedRowCellValue("ok")) { gridColumn3.UnboundType = DevExpress.Da

我有两列,所以当第一列单元格值包含“ok”时,将对第二列进行计算。如果它不包含“ok”,那么我不需要任何计算

代码可以工作,但不依赖于“ok”,不管单元格是否包含“ok”或其他内容

private void calculate()
{
    if (gridView3.Columns["Status"] == gridView3.GetFocusedRowCellValue("ok"))
    {
        gridColumn3.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
        gridColumn3.UnboundExpression = "DateDiffDay([StartDate], LocalDateTimeToday())";
    }
    else
    {   

    }
}

设置UnboundExpression属性会影响整个未绑定列。如果只需要计算特定行的值,则必须将UnboundExpression属性保留为空并处理事件。为每行引发此事件,允许您计算所需行的值。

设置UnboundExpression属性会影响整个未绑定列。如果只需要计算特定行的值,则必须将UnboundExpression属性保留为空并处理事件。为每一行引发此事件,允许您计算所需行的值。

您应该构建:

或按如下方式处理事件:

gridColumn3.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
gridView1.CustomUnboundColumnData += gridView1_CustomUnboundColumnData;
// ...
void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) {
    ColumnView view = ((ColumnView)sender);
    if(e.IsGetData && e.Column == gridColumn3) 
        e.Value = DateTime.Now.Day - ((EventObj)e.Row).StartDate.Day;
}
// ...
public enum Status { 
    Unknown, Ok 
}
public class EventObj {
    public Status Status { get; set; }
    public DateTime StartDate { get; set; }
}

您应该构建以下内容之一:

或按如下方式处理事件:

gridColumn3.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
gridView1.CustomUnboundColumnData += gridView1_CustomUnboundColumnData;
// ...
void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) {
    ColumnView view = ((ColumnView)sender);
    if(e.IsGetData && e.Column == gridColumn3) 
        e.Value = DateTime.Now.Day - ((EventObj)e.Row).StartDate.Day;
}
// ...
public enum Status { 
    Unknown, Ok 
}
public class EventObj {
    public Status Status { get; set; }
    public DateTime StartDate { get; set; }
}

说“它不起作用”是没有用的。哪一位不起作用?到底发生了什么?有错误吗?您采取了哪些步骤来修复它?有效但不取决于ok。。无所谓单元格包含ok或whatelseLooks,就像您正在设置列的
无界表达式一样,因此如果
if
语句中的条件至少匹配一次,则表达式将应用于该列中的所有单元格。说“它不起作用”是没有用的。哪一位不起作用?到底发生了什么?有错误吗?您采取了哪些步骤来修复它?有效但不取决于ok。。无所谓单元格包含ok或whatelseLooks,就像您正在设置列的
无界表达式一样,因此如果
if
语句中的条件至少匹配一次,则表达式将应用于该列中的所有单元格。