I'm attempting to create a custom field editor, and using the RadDropDownFilter example as a guide. My custom editor however has multiple fields - two text boxes, and two combo boxes.
When using the example code, on a postback the ArrayList in the SetEditorValues method only contains a single value - not the values entered for all four controls. The ExtractValues method does seem to be outputting an ArrayList with four elements.
Any thoughts? I'm guessing the issue might be that the inherited class - RadFilterDataFieldEditor - doesn't support multiple values? Should I be deriving from some other class? Code for the custom editor:
When using the example code, on a postback the ArrayList in the SetEditorValues method only contains a single value - not the values entered for all four controls. The ExtractValues method does seem to be outputting an ArrayList with four elements.
Any thoughts? I'm guessing the issue might be that the inherited class - RadFilterDataFieldEditor - doesn't support multiple values? Should I be deriving from some other class? Code for the custom editor:
public class RadFilterRangeValueTypeStrategy : RadFilterDataFieldEditor { private RadComboBox _combo_ValueType; private RadComboBox _combo_Strategy; private RadTextBox _textMin; private RadTextBox _textMax; protected override void CopySettings(RadFilterDataFieldEditor baseEditor) { base.CopySettings(baseEditor); var editor = baseEditor as RadFilterRangeValueTypeStrategy; if (editor != null) { DataSource_ValueType = editor.DataSource_ValueType; DataTextField_ValueType = editor.DataTextField_ValueType; DataValueField_ValueType = editor.DataValueField_ValueType; DataSource_Strategy = editor.DataSource_Strategy; DataTextField_Strategy = editor.DataTextField_Strategy; DataValueField_Strategy = editor.DataValueField_Strategy; MinValue = editor.MinValue; MaxValue = editor.MaxValue; } } public override System.Collections.ArrayList ExtractValues() { ArrayList list = new ArrayList(); list.Add(_combo_ValueType.SelectedValue); list.Add(_combo_Strategy.SelectedValue); list.Add(_textMin.Text); list.Add(_textMax.Text); return list; } public override void InitializeEditor(System.Web.UI.Control container) { Label minLabel = new Label(); minLabel.Text = "Min: "; container.Controls.Add(minLabel); _textMin = new RadTextBox(); _textMin.ID = "MinValue"; _textMin.Text = MinValue; _textMin.Width = Unit.Pixel(30); container.Controls.Add(_textMin); Label maxLabel = new Label(); maxLabel.Text = " Max: "; container.Controls.Add(maxLabel); _textMax = new RadTextBox(); _textMax.ID = "MaxValue"; _textMax.Text = MaxValue; _textMax.Width = Unit.Pixel(30); container.Controls.Add(_textMax); Label valueTypeLabel = new Label(); valueTypeLabel.Text = " Value Type: "; container.Controls.Add(valueTypeLabel); _combo_ValueType = new RadComboBox(); _combo_ValueType.ID = "ValueTypeCombo"; _combo_ValueType.DataTextField = DataTextField_ValueType; _combo_ValueType.DataValueField = DataValueField_ValueType; _combo_ValueType.DataSource = DataSource_ValueType; _combo_ValueType.DataBind(); _combo_ValueType.Width = Unit.Pixel(30); container.Controls.Add(_combo_ValueType); Label strategyLabel = new Label(); strategyLabel.Text = " Strategy: "; container.Controls.Add(strategyLabel); _combo_Strategy = new RadComboBox(); _combo_Strategy.ID = "StrategyCombo"; _combo_Strategy.DataTextField = DataTextField_Strategy; _combo_Strategy.DataValueField = DataValueField_Strategy; _combo_Strategy.DataSource = DataSource_Strategy; _combo_Strategy.DataBind(); _combo_Strategy.Width = Unit.Pixel(40); container.Controls.Add(_combo_Strategy); } public override void SetEditorValues(System.Collections.ArrayList values) { if (values != null && values.Count > 0) { if (values[0] == null) return; var item = _combo_ValueType.FindItemByValue(values[0].ToString()); if (item != null) item.Selected = true; } if (values != null && values.Count > 1) { if (values[1] == null) return; var item = _combo_Strategy.FindItemByValue(values[1].ToString()); if (item != null) item.Selected = true; } if (values != null && values.Count > 2) { if (values[2] == null) return; _textMin.Text = values[2].ToString(); } if (values != null && values.Count > 3) { if (values[3] == null) return; _textMax.Text = values[3].ToString(); } } public string DataTextField_ValueType { get { return (string)ViewState["DataTextField_ValueType"] ?? string.Empty; } set { ViewState["DataTextField_ValueType"] = value; } } public string DataValueField_ValueType { get { return (string)ViewState["DataValueField_ValueType"] ?? string.Empty; } set { ViewState["DataValueField_ValueType"] = value; } } public RadFilterDropDownEditorDataSource DataSource_ValueType { get { return (RadFilterDropDownEditorDataSource)ViewState["DataSource_ValueType"] ?? new RadFilterDropDownEditorDataSource(); } set { ViewState["DataSource_ValueType"] = value; } } public string DataTextField_Strategy { get { return (string)ViewState["DataTextField_Strategy"] ?? string.Empty; } set { ViewState["DataTextField_Strategy"] = value; } } public string DataValueField_Strategy { get { return (string)ViewState["DataValueField_Strategy"] ?? string.Empty; } set { ViewState["DataValueField_Strategy"] = value; } } public RadFilterDropDownEditorDataSource DataSource_Strategy { get { return (RadFilterDropDownEditorDataSource)ViewState["DataSource_Strategy"] ?? new RadFilterDropDownEditorDataSource(); } set { ViewState["DataSource_Strategy"] = value; } } public string MinValue { get { return (string)ViewState["MinValue"] ?? string.Empty; } set { ViewState["MinValue"] = value; } } public string MaxValue { get { return (string)ViewState["MaxValue"] ?? string.Empty; } set { ViewState["MaxValue"] = value; } } } }