Как стилизовать вложенные элементы управления панели в ASP.NET - PullRequest
0 голосов
/ 24 мая 2009

У меня есть панель, сидящая в div, и я хочу использовать эту панель в качестве контейнера, чтобы добавить больше панелей! Почему я хочу добавить панель на панель? Потому что панель, которую я добавляю в существующую панель, также содержит объекты, но только изображение и метку.

Существующая панель главного контейнера создается во время разработки и называется "toolboxpanel". Во время выполнения у меня есть цикл for / next, который динамически создает изображение, метку, добавляет их оба на панель, а затем добавляет эту панель на панель инструментов, как можно увидеть здесь:

For i = 0 To imageholder.Count - 1 'create a control
        insertpanel = New Panel 'these object types have been DIM'd up above
        insertimage = New Image
        inserttext = New Label
        inserttext.ID = "text" + partnumberholder(i) + i.ToString 'the "holder" arrays hold the goodies from my db
        inserttext.Text = brandholder(i) + " " + partnumberholder(i)
        insertimage.ID = "image" + partnumberholder(i) + i.ToString
        insertimage.ImageUrl = ".\Images\Display\" + imageholder(i) + ".jpg"
        insertpanel.CssClass = "drag" 'this allows the panel to be dragged around using a JQuery script elsewhere
        'insertpanel.BackImageUrl = "~\Images\Display\" + imageholder(i) + ".jpg" 'commented out because this method looks awful
        insertpanel.ID = "panel" + partnumberholder(i) + i.ToString

        insertpanel.Controls.Add(insertimage)
        insertpanel.Controls.Add(inserttext)
        toolboxpanel.Controls.Add(insertpanel)
    Next

Проблема в том, что каждая панель, которую я добавляю в панель, вставляется в 1 столбец и полностью нарушает правила CSS панели инструментов, которые говорят, что максимальная высота составляет всего 700 пикселей. Кажется, что она растягивает панель, и div, в котором она сидит, намного выше, чем должно быть!

Мои основные вопросы:

1) Как мне получить его, чтобы я мог добавлять объекты панели (с изображениями / кишками надписей) на главную панель таким образом, чтобы она отображалась с 3 столбцами, фиксированной видимой высотой и полосой прокрутки?

2) Есть ли лучший способ сделать это? Там должно быть: (

Текущий беспорядок можно увидеть на домашней странице: http://www.mobiuspc.com

Я ценю любую помощь! Билл

Ответы [ 2 ]

2 голосов
/ 24 мая 2009

Вам нужно две вещи:

  1. A таблица стилей clearfix
  2. Чтобы плавать ваши внутренние панели

Плавание - это просто, но иногда поначалу может показаться немного сложным. Прочтите эти уроки на поплавках, чтобы узнать о них все.

По сути, все, что вам нужно сделать, это добавить следующий стиль к стилям ваших внутренних панелей:

float: left;

Floating автоматически сделает div и все его содержимое максимально узкими, поэтому обязательно укажите ширину , как у вас уже есть.

Затем вам нужно применить стиль clearfix к вашей внешней панели, чтобы все плавающее содержимое внутри нее не страдало от "эффекта гильотины". Поскольку плавающие блоки не имеют «макета», они не являются частью нормального потока документов и, следовательно, игнорируются их родительскими контейнерами. Clearfix решает эту проблему, заставляя контейнер распознавать поплавки как имеющие макет.

0 голосов
/ 24 мая 2009

Панели обычно, но не всегда, должны отображаться как теги div, идентификаторы блокируются контейнером именования, поэтому проще добавить атрибут cssclass ... установить свой css соответствующим образом.

Если вы хотите, чтобы избыточный поток позволял прокручивать, вам нужно, чтобы ваше положение и высота были установлены для этого.

.myContainter {
    position: relative; /* or absolute, or a float */
    height: 700px;
    overflow: auto;
}

должен это сделать. :)

...