Подсвечивание одного поля в реестре

Добрый день!

В странице раздела использую переопределенный метод 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;

При этом цвет фона меняется у всей строки, подскажите можно ли сделать так, чтобы в реестре менялся цвет только конкретного поля?

Нравится

3 комментария

Да, посмотреть, как это сделано, можно на странице «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), оно тоже справочное.

Показать все комментарии