Ошибка: индекс выходит за пределы диапазона Должен быть неотрицательным и меньше размера коллекции
У меня есть настроенный LookUpEdit -
public class MyLookUpEdit : LookUpEdit
Я ссылаюсь на следующую ссылку, чтобы добавить MyLookUpEdit на ленту. Теперь MyLookUpEdit доступен в моей лентеPageGroup -> Добавить редактор.
http://www.devexpress.com/Support/Center/KB/ViewKBIssue.aspx?kbid=A1237
Вот метод InitializeControl для MyLookUpEdit:
public void InitializeControl(ICollection cache, string columnField1, string columnField2, string valueField, bool isMultiColumn, int searchColumn)
{
Properties.ForceInitialize();
const int maxDropDownSize = 7;
Properties.Columns.Clear();
if(isMultiColumn)
{
Properties.Columns.AddRange(new[] {
new LookUpColumnInfo(columnField1, columnField1, columnField1.Length*6, FormatType.None, "", true, HorzAlignment.Near, DevExpress.Data.ColumnSortOrder.None),
new LookUpColumnInfo(columnField2, columnField2, 100, FormatType.None, "", true , HorzAlignment.Near, DevExpress.Data.ColumnSortOrder.None)});
Properties.ShowHeader = true;
Properties.PopupFormMinSize = new Size(0, 0);
Properties.AppearanceDropDownHeader.TextOptions.HAlignment = HorzAlignment.Near;
Properties.AutoSearchColumnIndex = searchColumn;
}
else
{
Properties.Columns.AddRange(new[]{
new LookUpColumnInfo(columnField1, columnField1, 10, FormatType.None, "", true, HorzAlignment.Near, DevExpress.Data.ColumnSortOrder.None),
new LookUpColumnInfo(columnField2, columnField2, 0, FormatType.None, "", false , HorzAlignment.Near, DevExpress.Data.ColumnSortOrder.None)});
Properties.ShowHeader = false;
Properties.PopupFormMinSize = new Size(10, 10); // set popup width to control width
break;
}
Properties.ShowFooter = false;
Properties.ShowLines = true;
Properties.ValueMember = valueField;
Properties.DisplayMember = columnField1;
Properties.DataSource = cache;
if (cache == null) return;
Properties.DropDownRows = cache.Count > maxDropDownSize ? maxDropDownSize : cache.Count;
ColumnBestFit();
HideIcon();
}
Но во время выполнения на ленте я не могу нажать кнопку и увидеть все доступные значения для lookupedit - похоже, что всплывающее окно не открыто, и когда я покидаю редактирование, следующий код выдает ошибку: 1014 *
protected override void OnLeave(EventArgs e)
{
if (IsPopupOpen)
{
ItemIndex = PopupForm.SelectedIndex;
_selectfromPopup = true;
}
Properties.DisplayMember = Properties.Columns[0].Caption; // This line throw the error
base.OnLeave(e);
if (textChanged)
OnLeaveWithChangedText(e);
}