【问题标题】:ASP.Net Checkboxlist Background colorASP.Net Checkboxlist 背景颜色
【发布时间】:2011-11-14 23:01:11
【问题描述】:

我在 aspx 上有一个复选框列表

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

我从后面的代码中添加 listItems。

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;");

一件商品的颜色会有所不同,商品的名称也会有所不同。所以,问题是背景颜色只覆盖了文本长度。并非所有项目的背景颜色都对齐。我和检查员核对了一下,发现..

  • 背景颜色样式应用于文字周围的&lt;span&gt;
  • 所有跨度都在 &lt;td&gt; 内。

我想知道是否有一种方法可以毫不费力地将这种样式应用于&lt;td&gt;。我宁愿不通过搜索名称来使用 jquery 和 javascript。

有什么办法吗?

【问题讨论】:

    标签: c# asp.net checkbox


    【解决方案1】:

    我已经尝试并找到了这个解决方案,它对我有用。

    试着给 padding-right 例如:

    newCkItm.Attributes.Add("style", "background-color:Red;padding-right:30px");
    

    【讨论】:

      【解决方案2】:

      不是为每个项目添加样式属性,因为您提到每个项目需要不同的背景颜色,我会添加一个 id 属性:

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

      这样,您可以将所有样式与代码分开,而不必在每次需要调整 CSS 时重新编译等。

      使用&lt;asp:CheckBoxList /&gt;,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 设置为块级可以解决背景颜色仅覆盖文本长度的问题。

      【讨论】:

        【解决方案3】:

        如果你使用一个带有 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>
        

        【讨论】:

        • 我知道.. 我正在考虑如何通过使用 Asp.Net 复选框列表来做到这一点
        • 您的请求并不常见,因此您需要一种特殊的方式来处理它:)
        • 如果你改变字体颜色,那会不会那么“碍眼”?
        • 如果可以的话我会的。但是设计规范是改变背景颜色。
        【解决方案4】:

        我认为没有其他方法,您必须单独访问元素并将 css 分配给项目。我倾向于使用 foreach 循环,访问项目并添加属性。 TBH,与中继器相比,我会使用复选框列表,除非我需要一些额外的功能

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-30
          • 1970-01-01
          • 2015-11-29
          相关资源
          最近更新 更多