ASP.Net Checkboxlist Цвет фона - PullRequest
       3

ASP.Net Checkboxlist Цвет фона

0 голосов
/ 14 ноября 2011

У меня есть флажок на aspx

<asp:CheckBoxList ID="cblCalendarFilter" runat="server" />

Я добавляю список элементов из кода позади.

newCkItm = new ListItem();
newCkItm.Text = childrenFoldersData[i].Description.Trim();
newCkItm.Value = childrenFoldersData[i].Id.ToString().Trim();
newCkItm.Selected = true;

Я могу добавить фон ListItem с помощью

newCkItm.Attributes.Add("style", "background-color:Red;");

Цвета будут отличаться от одного элемента к другому, и название элемента также будет отличаться. Итак, проблема в том, что цвет фона покрывает только длину текста. Цвет фона не выровнен для всех элементов. Я проверил с инспектором и выяснил, что ..

  • Стиль цвета фона применяется к <span>, окружающему текст
  • Все пролеты находятся внутри <td>.

Мне интересно, есть ли способ применить этот стиль к <td> без особых усилий. Я бы предпочел не использовать jquery и javascript при поиске по имени.

Есть ли способ сделать это ??

Ответы [ 4 ]

1 голос
/ 14 ноября 2011

Я попытался найти это решение, и оно сработало для меня.

Просто попробуй дать отступ-право например:

newCkItm.Attributes.Add("style", "background-color:Red;padding-right:30px");
0 голосов
/ 14 ноября 2011

Вместо добавления атрибута стиля к каждому элементу, и поскольку вы упомянули, что для каждого элемента требуется свой цвет фона, я бы добавил атрибут id:

newCkItm.Attributes.Add("id", "alpha");

Таким образом, вы можете хранить все свои стили отдельно от вашего кода, и вам не придется перекомпилировать и т. Д. Каждый раз, когда вам нужно настроить CSS.

С <asp:CheckBoxList /> сам CSS будет выглядеть примерно так:

#cblCalendarFilter {
    border:none;
    border-collapse:collapse;
}

#cblCalendarFilter td {
    padding:0;
}

#cblCalendarFilter span {
    display:block;
    padding:2px;
}

#cblCalendarFilter #alpha {
    background:red;
}

#cblCalendarFilter #beta {
    background:yellow;
}

Надеемся, что создание блока span-уровня устранит проблему, связанную с цветом фона, охватывающим только длину текста.

0 голосов
/ 14 ноября 2011

Я думаю, что нет другого пути, вы должны индивидуально получить доступ к элементу и назначить CSS для элементов.Я склонен использовать цикл foreach, получать доступ к элементу и добавлять атрибуты.TBH, я бы остался с чекбоксом по сравнению с ретранслятором, если только мне не нужна дополнительная функциональность

0 голосов
/ 14 ноября 2011

Как насчет того, чтобы использовать репитер с tr / td с CheckBox внутри и выполнить логику для события ItemDataBound, где вы можете получить td:

<table>
    <asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_ItemDataBound">
        <ItemTemplate>
            <tr>
                <td id="myTd" runat="server">
                    <asp:CheckBox runat="server" ID="myCheckBox" />
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...