2011-11-14 68 views
0

我對ASPXASP.Net CheckBoxList的背景顏色

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

一個CheckBoxList的我從代碼中添加listItems中的後面。

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

我可以

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

添加列表項的背景顏色會從一個項目到另一個項目的名稱也將是不同的不同。所以,問題是背景顏色只覆蓋文字長度。所有項目的背景顏色未對齊。我檢查與檢查,並發現..

  • 背景顏色風格正在申請<span>文字周圍
  • 所有跨度的<td>內。

我想知道是否有辦法將這種風格應用到<td>沒有太多的努力。我寧願不通過搜索名稱來使用jquery和javascript。

有沒有辦法做到這一點?

回答

0

而不是增加一個風格屬性,每一個項目,因爲你提到的每個項目需要一個不同的背景顏色,我想補充一個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; 
} 

希望使跨度塊級將解決你與背景顏色只覆蓋文本長度的問題。

0

怎麼樣,如果你使用具有中繼TR/TD與CheckBox裏面,做在那裏你可以檢索TD上ItemDataBound事件的邏輯:

<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> 
+0

我知道..我想如何通過使用Asp.Net複選框列表 – william

+0

您的請求不是那麼常見,所以你需要一種特殊的方式來對待它:) – misha

+0

如果你要改變字體顏色相反,這不會是如此「眼睛不安」? – misha

0

我覺得沒有別的辦法,您必須單獨訪問該元素並將CSS分配給項目。我傾向於使用foreach循環,訪問該項目並添加屬性。 TBH,我會留在checkboxlist比較直放站,除非我需要一些額外的功能

1

我試過,發現這個解決方案&它爲我工作。

只是儘量給填充右 例如:

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