Hi.
I want change ComboBox items by some condition in each row.
I found a solution in Enum localizatin sample. But it doesn't work.
void gridGroupingControl1_QueryCellStyleInfo(object sender, GridTableCellStyleInfoEventArgs e)
{
var el = e.TableCellIdentity;
var item = el.DisplayElement != null ? el.DisplayElement.GetData() : null;
if (item is Employee &&
el.Column != null &&
el.Column.FieldDescriptor != null &&
el.Column.FieldDescriptor.FieldPropertyType.IsEnum &&
(el.DisplayElement.Kind == DisplayElementKind.Record
|| el.DisplayElement.Kind == DisplayElementKind.AddNewRecord))
{
var context = new TypeDescriptorContext(item, e.Style.PropertyDescriptor);
var converter = e.Style.PropertyDescriptor.Converter;
if (converter != null)
{
var contextualValues = converter.GetStandardValues(context).OfType<object>().ToArray();
e.Style.CellType = "ComboBox";
if (!checkBox1.Checked)
e.Style.DataSource = contextualValues; }
}
}
//----------------------------------------------------
private System.Collections.ICollection GetContextualCollection(Context employeeContext)
{
switch (employeeContext)
{
case Context.Employed:
return new Collection<Status>{ Status.Married, Status.Single, Status.Widow };
case Context.OnVacation:
return new Collection<Status>{ Status.Married };
case Context.Retired:
return new Collection<Status>{ Status.Single, Status.Divorced };
case Context.Sick:
return new Collection<Status>{ Status.Widow};
default:
return new Collection<Status>{ Status.Married, Status.Single, Status.Widow, Status.Divorced };
}
}
Thanks.