thanks for answer!
This is how I implemented the editor column.
This worked fine, just do not find a way to render the column with the text of the combobox.
private void CreateEditorColumn(.........)
{
Column column = new Column
{
ColumnID = columnID,
DataIndex = dataIndex,
Header = header,
Tooltip = tooltip,
};
if (width > 0)
{
column.Width = width;
}
if (gridEditableColumnParameters.TypeEditableColumn == TypeEditableColumn.Combo)
{
CreateComboEditorColumn(gridEditableColumnParameters, column);
}
column.Renderer.Handler = ??????????????
grdGenerica.ColumnModel.Columns.Add(column);
}
private void CreateComboEditorColumn(GridEditableColumnParameters gridEditableColumnParameters, Column column)
{
Ext.Net.ComboBox comboEditor = new Ext.Net.ComboBox();
Store store = new Store { AutoLoad = false, };
JsonReader reader = new JsonReader();
reader.Fields.Add(new RecordField(gridEditableColumnParameters.ComboDisplayField));
reader.Fields.Add(new RecordField(gridEditableColumnParameters.ComboValueField));
store.Reader.Add(reader);
store.Proxy.Add(new PageProxy());
store.RefreshData += new Store.AjaxRefreshDataEventHandler((sender, args) =>
{
Store storeCombo = (Store)sender;
string gridSelectedValue = grdGeneric.SelectedValues.First();
if (gridEditableColumnParameters.OnNeedComboDataSource != null)
gridEditableColumnParameters.OnNeedComboDataSource(grdGeneric.SelectedValues.First(), storeCombo);
});
comboEditor.Store.Add(store);
comboEditor.DisplayField = gridEditableColumnParameters.ComboDisplayField;
comboEditor.ValueField = gridEditableColumnParameters.ComboValueField;
comboEditor.ID = gridEditableColumnParameters.ComboValueField + "_Editor";
comboEditor.Listeners.BeforeQuery.Fn = "function(qe) { this.store.reload(); }";
column.Editor.Add(comboEditor);
grdGenerica.DirectEvents.AfterEdit.ExtraParams.Add(new Ext.Net.Parameter { Mode = ParameterMode.Raw, Name = "value", Value = "e.value" });
grdGenerica.DirectEvents.AfterEdit.Event += new ComponentDirectEvent.DirectEventHandler((obj, sender) =>
{
string comboSelectedValue = sender.ExtraParams["value"];
string gridSelectedValue = grdGeneric.SelectedValues.First();
if (gridEditableColumnParameters.OnChangeColumnValue != null)
gridEditableColumnParameters.OnChangeColumnValue(gridSelectedValue, comboSelectedValue);
grdGenerica.Store.Primary.CommitChanges();
});
}
public class GridEditableColumnParameters
{
public TypeEditableColumn TypeEditableColumn { get; set; }
public Action<string, Store> OnNeedComboDataSource { get; set; }
public Action<string, string> OnChangeColumnValue { get; set; }
public string ComboDisplayField { get; set; }
public string ComboValueField { get; set; }
public string FieldMappingGridFromCombo { get; set; }
}
How to render a grid column text from a combo display value??
Thanks!
Regards.
Originally Posted by
Daniil