在代码隐藏中更改中继器项目的样式?
Posted
技术标签:
【中文标题】在代码隐藏中更改中继器项目的样式?【英文标题】:Change style of repeater item in codebehind? 【发布时间】:2011-10-01 12:12:35 【问题描述】:只是想知道是否有办法从代码隐藏中更改重复项的样式/css。基本上我有一个页面的打印机友好版本,如果显示是打印机友好的,我想为转发器中的每个项目添加一个底部边距。这可能吗?
【问题讨论】:
【参考方案1】:是的,可以在中继器的ItemDataBound 事件中进行。
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
((htmlControl)e.Item.FindControl("SomeControl")).Attributes.Add("class", "cssStyle");
【讨论】:
【参考方案2】:有几个选项可以应用样式,看看你的Repeater的ItemDataBound事件。
代码隐藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim tbl As New DataTable
tbl.Columns.Add(New DataColumn())
For i As Int32 = 1 To 10
tbl.Rows.Add(tbl.NewRow)
tbl.Rows(tbl.Rows.Count - 1)(0) = "Item " & i
Next
Me.Repeater1.DataSource = tbl
Me.Repeater1.DataBind()
End If
End Sub
Private Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem
Dim dr = DirectCast(e.Item.DataItem, DataRowView)
Dim Label1 = DirectCast(e.Item.FindControl("Label1"), Label)
Label1.Text = dr(0)
'use CssClass property'
Label1.CssClass = "MyClass"
'use Style property'
Label1.Style.Add("color", "red")
'use direct properties, for example'
Label1.BackColor = Drawing.Color.Yellow
End Select
End Sub
aspx:
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="Label1" runat="server" ></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
【讨论】:
【参考方案3】:是的,你可以。你在重复什么? <TR>
? <DIV>
?
只需从后面的代码中更改 CssClass ... 例如:YourRepeatedItem.CssClass = "PrinterFriendly"。
For each ReaptedItem as repeaterItem in YourRepeater.items
dim ItemToBeModified as htmlcontrol = RepeatedItem.findControl("ControlID")
ItemToBeModified.CssClass = "PrinterFriendly"
Next
【讨论】:
【参考方案4】:可以从代码隐藏更改任何控件的样式。基本上 WebControl 类(所有 asp.net UI 控件的父级)具有 CssClass 属性和许多其他公开样式行为的属性。通过更改它们,您可以更改外观。
【讨论】:
【参考方案5】:您可能还想利用样式表中可用的“媒体”属性:http://www.javascriptkit.com/dhtmltutors/cssmedia.shtml
<link rel="stylesheet" type="text/css" media="print" href="print.css">
或
<style type="text/css">
@media print
.XXXmargin-bottom:5px;
</style>
<asp:Label ID="Label1" CssClass="XXX" runat="server"></asp:Label>
【讨论】:
以上是关于在代码隐藏中更改中继器项目的样式?的主要内容,如果未能解决你的问题,请参考以下文章