我有2列,所以当第一列单元格值包含“ok”时,将在第二列上进行计算。如果它不包含“ok”,那么我不需要任何计算。
代码有效,但不依赖于“ok”,如果单元格包含“ok”或其他任何内容都无关紧要。
{{1}}
答案 0 :(得分:1)
设置 UnboundExpression 属性会影响整个未绑定列。如果只需要为特定行计算值,则必须将UnboundExpression属性保留为空并处理GridView.CustomUnboundColumnData事件。为每一行引发此事件,允许您计算所需行的值。
答案 1 :(得分:1)
您应该构建correct unbound expression:
gridColumn3.UnboundExpression = "Iif([Status]=1, DateDiffDay([StartDate], LocalDateTimeToday()), 0)";
或按如下方式处理GridView.CustomUnboundColumnData事件:
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; }
}