Вставка управления перед другим управлением

Как я динамично вставляю управление перед другим управлением в asp.net. Позволяет говорят, что control1 является некоторым управлением на веб-странице, и я хочу динамично создать и вставить таблицу незадолго до control1.

например.

table1 = new Table();
table1.ID = "Table1";

но что прибывает затем? Для добавления управления как, ребенок, я сделал бы: control1.Controls.Add(table1); но как же я вставляю table1 как предыдущий одноуровневый элемент control1?

11
задан AJ. 17 February 2010 в 14:54
поделиться

2 ответа

Если вы хотите, чтобы новый элемент управления ( 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);
}

Я бы предпочел этот метод, поскольку он более гибкий и не полагается на страницу .

17
ответ дан 3 December 2019 в 07:12
поделиться
$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, как большинство других типов сбора.

0
ответ дан 3 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: