Добрый день!
В странице раздела использую переопределенный метод GetModuleRowConfig со следующим кодом:
var configs = base.GetModuleRowConfig( module );
string primaryColumnName = module.Schema.PrimaryColumn.Name;
string primaryColumnValue = module.GetColumnValue(primaryColumnName).ToString();
var config = new DataSourceRowConfig(primaryColumnValue);
string VIPColumnValue = "";
Select select = new Select( UserConnection )
.Column("VipClientMarkId")
.From("Contact")
.Where("Contact", "Id")
.IsEqual( new QueryParameter( module.GetTypedColumnValue( "DebtorContactId" ) ) ) as Select;
VIPColumnValue = select.ExecuteScalar();
if ( VIPColumnValue != null ) {
configs.AddConfig( new DataSourceRowBackgroundColorConfigValue( "Salmon" ));
}
return configs;
При этом цвет фона меняется у всей строки, подскажите можно ли сделать так, чтобы в реестре менялся цвет только конкретного поля?
Нравится
Да, посмотреть, как это сделано, можно на странице «RecordAllChangesGridPage» (журнал изменений):
public virtual DataSourceRowConfig GetRowConfig(Entity row) { if (!HighlightColumnsCheckPerformed) { HighlightColumns = GetColumnsHighlightState(); HighlightColumnsCheckPerformed = true; } string primaryColumnName = row.Schema.PrimaryColumn.Name; string primaryColumnValue = row.GetColumnValue(primaryColumnName).ToString(); var config = new DataSourceRowConfig(primaryColumnValue); Guid changeType = row.GetTypedColumnValue<Guid>("ChangeTypeId"); string backgroundColor; if (changeType == new Guid("A852C33F-0BDD-E011-92C3-00155D04C01D")) { backgroundColor = "Green"; } else if (changeType == new Guid("AA52C33F-0BDD-E011-92C3-00155D04C01D")) { backgroundColor = "Red"; } else { backgroundColor = "Blue"; } var cellsBackground = new Dictionary<string, DataSourceRowColumnBackgroundColorConfigValue>(); if (PreviousRow != null && HighlightColumns) { var previousRow = PreviousRow as Entity; foreach (var column in row.Schema.Columns) { if ((column.Name != "ModifiedOn") && (column.Name != "ModifiedBy") && (column.Name != "ChangeTrackedBy") && (column.Name != "ChangeTrackedOn") && (column.Name != "ChangeType")) { object currentValue = row.GetColumnValue(column.Name); object prevValue = previousRow.GetColumnValue(column.Name); if (!Object.Equals(currentValue, prevValue)) { cellsBackground.Add(column.Name, new DataSourceRowColumnBackgroundColorConfigValue("#FFF30F")); } } } } PreviousRow = row; config.AddConfig(new DataSourceRowColorConfigValue(backgroundColor)); config.AddConfig(new DataSourceRowColumnsBackgroundColorConfigValue(cellsBackground)); return config; }
Алксандр, а если поле справочное, как тогда? (т.е. в бд поле DebtorContactId, а в карточке и реестре отображается Физ лицо)
А в чём разница? В моём примере в цикле перебираются колонки и выкидывается ModifiedBy (полное название ModifiedById), оно тоже справочное.