在代码隐藏中更改中继器项目的样式?

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】:

是的,你可以。你在重复什么? &lt;TR&gt;&lt;DIV&gt; ?

只需从后面的代码中更改 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>

【讨论】:

以上是关于在代码隐藏中更改中继器项目的样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Android 布局样式中继承样式的背景颜色?

Axure中继器实现子表的展开和收缩

ACF 中继器字段和 Clearfix / 显示时的样式

29.中继器每页项目数量与分页

如何使用Axure中继器创建复杂的列表

如何访问包含在中继器中的 Listview 中的按钮?