Как я динамично вставляю управление перед другим управлением в asp.net. Позволяет говорят, что control1 является некоторым управлением на веб-странице, и я хочу динамично создать и вставить таблицу незадолго до control1.
например.
table1 = new Table();
table1.ID = "Table1";
но что прибывает затем? Для добавления управления как, ребенок, я сделал бы: control1.Controls.Add(table1);
но как же я вставляю table1 как предыдущий одноуровневый элемент control1?
Если вы хотите, чтобы новый элемент управления ( controlB
) располагался непосредственно перед controlA
, вы можете определить индекс из controlA
в коллекции Page.Controls
и вставьте controlB
в это место. Я считаю, что это подтолкнет controlA
вперед на один индекс, сделав их ближайшими братьями и сестрами по желанию.
if(Page.Controls.IndexOf(controlA) >= 0)
Page.Controls.AddAt(Page.Controls.IndexOf(controlA), controlB);
Редактировать:
Еще одно замечание - вышеупомянутое предполагает, что элементы управления A и B находятся на уровне корневой страницы. Вы также можете использовать свойство Parent
, чтобы гарантировать, что вставка одного уровня работает независимо от того, где controlA
находится в иерархии страниц:
Control parent = controlA.Parent;
if(parent != null && parent.Controls.IndexOf(controlA) >= 0)
{
parent.Controls.AddAt(parent.Controls.IndexOf(controlA), controlB);
}
Я бы предпочел этот метод, поскольку он более гибкий и не полагается на страницу
.
$value = ( array_key_exists($key, $array) && !empty($array[$key]) )
? $array[$key]
: 'non-existant or empty value key';
-121--2632553- Вы пробовали control1.Controls.AddAt (0, таблица1)
? Странно, что они не вызвали метод Insert, как большинство других типов сбора.