Код: Выделить всё
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);
Цель «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, созданные ранее.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ataeditors
Мобильная версия