在代码后面更改转发器项目的样式?

时间:2011-07-08 18:27:46

标签: asp.net css vb.net repeater

只是想知道是否有办法从代码隐藏中更改repeateritems的样式/ css。基本上我有一个打印机友好版本的页面,如果显示器是打印机友好的,我想为转发器中的每个项目添加一个底部边距。这可能吗?

5 个答案:

答案 0 :(得分:2)

是的,可以在Repeater的ItemDataBound事件中进行。

   protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) {
        ((HtmlControl)e.Item.FindControl("SomeControl")).Attributes.Add("class", "cssStyle");
    }

答案 1 :(得分: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>        

答案 2 :(得分:0)

是的,你可以。你在重复什么?一个<TR>?一个<DIV>

只需从后面的代码更改Css类...例如:YourRepeatedItem.CssClass =“Printer Friendly”。

答案 3 :(得分:0)

可以从代码隐藏中更改任何控件的样式。基本上, WebControl 类(所有asp.net UI控件的父级)具有 CssClass 属性以及暴露样式行为的许多其他属性。通过更改它们,您可以更改外观。

答案 4 :(得分:0)

您可能还想使用样式表中提供的“媒体”属性:http://www.javascriptkit.com/dhtmltutors/cssmedia.shtml

<link rel="stylesheet" type="text/css" media="print" href="print.css">

OR

<style type="text/css">
@media print {
    .XXX{margin-bottom:5px;}
}
</style>
<asp:Label ID="Label1" CssClass="XXX" runat="server"></asp:Label>