Динамический список со списком с C# и ASPX Веб-формы ASP.NET (ASPxDataEditors)C#

Место общения программистов C#
Ответить
Anonymous
 Динамический список со списком с C# и ASPX Веб-формы ASP.NET (ASPxDataEditors)

Сообщение Anonymous »

Я пытаюсь создать динамические поля со списком, и у меня работает следующий код:

Код: Выделить всё

private void controlCreateCmbT(string idcomp, string caption, List columns)
{
var controlInfoCmbT = Session["controlInfoCmbT"] as List ?? new List();
controlInfoCmbT.Add(new controlInfoCmbT { idComp = idcomp, caption = caption, columns = columns });
Session["controlInfoCmbT"] = controlInfoCmbT;

int numberOfColumns = 0;

var comboBox = new ASPxComboBox
{
ID = idcomp,
ClientInstanceName = idcomp,
Theme = "Office365",
Width = Unit.Percentage(50),
NullText = caption,
EnableCallbackMode = true,
CallbackPageSize = 25,
ValidationSettings = { CausesValidation = false },
ValueType = typeof(string)
};

var firstRow = columns.FirstOrDefault();

if (firstRow != null)
{
var properties = firstRow.GetType().GetProperties();
numberOfColumns = properties.Length;

for (int i = 0; i < numberOfColumns; i++)
{
string propertyName = properties[i].Name;

var column = new ListBoxColumn(propertyName, "Column " + i);
if (i == 0)
{
comboBox.ValueField = propertyName;
}

comboBox.Columns.Add(column);
}

var formatString = string.Join(" | ", Enumerable.Range(0, numberOfColumns).Select(i => "{" + i + "}"));
comboBox.TextFormatString = formatString;
}
else
{
Console.WriteLine("The list is empty.");
}

var layoutItem = new LayoutItem
{
Caption = caption,
ShowCaption = DefaultBoolean.True
};
var container = new LayoutItemNestedControlContainer();
container.Controls.Add(comboBox);
layoutItem.Controls.Add(container);
formLayoutt.Items.Add(layoutItem);

mConsulGen mcs = new mConsulGen();
mcs.userLog = Session["usuario"].ToString();
consulgen.GetPrueba(comboBox, mcs.userLog);
}
Вот как я заполняю поля со списком:

Код: Выделить всё

consulgen.GetPrueba(comboBox, mcs.userLog);
Я передаю ComboBox контроллеру, который загружает данные посредством запроса к базе данных. Однако, когда у меня есть ComboBox и я прокручиваю его, он не загружает больше данных, и я получаю следующую ошибку:
Цель «ctl00$PageContent$formLayoutt$incaIDPcal» для обратного вызова не найдена или не найдена. реализовать ICallbackEventHandler.
Когда я создаю ComboBox статически, эта проблема не возникает.
ComboBox создается здесь:

Код: Выделить всё











`

I have tried using Page_Init in the following way:

`protected void Page_Init(object sender, EventArgs e)
{
if (Session["controlInfoCmbT"] != null)
{
var controlInfoCmbT = (List)Session["controlInfoCmbT"];
var controlInfoCmbTCopy = new List(controlInfoCmbT);

if (IsCallback)
{
foreach (var info in controlInfoCmbTCopy)
{
if (!r)
{
r = true;
controlCreateCmbT(info.idComp, info.caption, info.columns);
}
}
}

foreach (var info in controlInfoCmbTCopy)
{
if (!r)
{
formLayoutt.Items.Clear();
controlCreateCmbT(info.idComp, info.caption, info.columns);
}
}
}
}
Если он вводит обратный вызов, он должен один раз перестроить динамический ComboBox и загрузить дополнительные данные.
Если страница перезагружается, он должен восстановить ComboBox, созданные ранее.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ataeditors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»