Hello,
still am having some problem while selecting the values from the GridViewMultiComboBoxColumn.
For Example:
In TextChanged event while filter the values it throws an exeception "The collection already contains a FilterExpresion for the field 'RealName'.
using
System.Windows.Forms;
using Telerik.WinControls.UI;
using Telerik.WinControls.Data;
using System.Data;
using Telerik.WinControls;
using System.Threading;
namespace
MultiComboApp
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
FilterExpression filterRealName;
FilterExpression filterNickName;
FilterExpression filterCode;
DataTable dtData;
private void LoadTable()
{
dtData =
new DataTable();
dtData.Columns.Add(
"Code");
dtData.Columns.Add(
"RealName");
dtData.Columns.Add(
"NickName");
dtData.Rows.Add(
new object[] { "1011", "dinesh", "din13" });
dtData.Rows.Add(
new object[] { "1022", "dineshkumar", "Guru23" });
dtData.Rows.Add(
new object[] { "2031", "Vijay", "Vin31" });
dtData.Rows.Add(
new object[] { "2032", "Vignesh", "Vick32" });
dtData.Rows.Add(
new object[] { "4101", "Senthil", "sen01" });
}
private void FillGrid()
{
GridViewMultiComboBoxColumn gvmcTest = new GridViewMultiComboBoxColumn();
gvmcTest.DataSource = dtData;
gvmcTest.AutoCompleteMode =
AutoCompleteMode.SuggestAppend;
gvmcTest.DropDownStyle =
RadDropDownStyle.DropDown;
gvTest.Columns.Add(gvmcTest);
gvTest.Columns[0].Width = 300;
filterRealName =
new FilterExpression("RealName", FilterExpression.BinaryOperation.OR,
GridKnownFunction.StartsWith, GridFilterCellElement.ParameterName);
filterNickName =
new FilterExpression("NickName", FilterExpression.BinaryOperation.OR,
GridKnownFunction.StartsWith, GridFilterCellElement.ParameterName);
filterCode =
new FilterExpression("Code", FilterExpression.BinaryOperation.OR,
GridKnownFunction.StartsWith, GridFilterCellElement.ParameterName);
}
private void Form1_Load(object sender, System.EventArgs e)
{
LoadTable();
FillGrid();
}
private void gvTest_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
RadMultiColumnComboBoxElement comboColumn = (RadMultiColumnComboBoxElement)this.gvTest.ActiveEditor;
comboColumn.AutoSizeDropDownToBestFit =
true;
comboColumn.AutoFilter =
true;
comboColumn.TextChanged +=
new System.EventHandler(editor_TextChanged);
}
void editor_TextChanged(object sender, System.EventArgs e)
{
RadMultiColumnComboBoxElement editor = (RadMultiColumnComboBoxElement)this.gvTest.ActiveEditor;
string sText = editor.Text.Trim();
// When the lock is obtained, add an element.
editor.EditorControl.MasterGridViewTemplate.FilterExpressions.Remove(filterRealName);
editor.EditorControl.MasterGridViewTemplate.FilterExpressions.Remove(filterNickName);
editor.EditorControl.MasterGridViewTemplate.FilterExpressions.Remove(filterCode);
filterRealName.Parameters.Clear();
filterNickName.Parameters.Clear();
filterCode.Parameters.Clear();
filterRealName.Parameters.Add(
GridFilterCellElement.ParameterName, sText);
filterNickName.Parameters.Add(
GridFilterCellElement.ParameterName, sText);
filterCode.Parameters.Add(
GridFilterCellElement.ParameterName, sText);
editor.EditorControl.MasterGridViewTemplate.FilterExpressions.Add(filterRealName);
editor.EditorControl.MasterGridViewTemplate.FilterExpressions.Add(filterNickName);
editor.EditorControl.MasterGridViewTemplate.FilterExpressions.Add(filterCode);
editor.EditorControl.GridElement.Update(
GridUINotifyAction.FilteringChanged);
}
}
}