使用一个asp生成的表行:中继器:ASP.NET:如何在DataBind中设置控件的css类?
<asp:repeater ID="announcementsRepeater" OnItemDataBound="announcementsRepeater_ItemDataBound" runat="Server">
<itemtemplate>
<tr id="announcementRow" class="announcementItem" runat="server">...</tr>
</itemtemplate>
</asp:repeater>
现在,在数据绑定我要标记与不同的CSS类“未读”的公告,从而使网络的人可以执行任何造型他想读和未读的公告区分:
protected void announcementsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
return;
// get the associated data item
Announcement announcement = (Announcement)e.Item.DataItem;
WebControl row = (WebControl)e.Item.FindControl("announcementRow");
if (row != null)
row.CssClass = row.CssClass + " announcementItemUnread";
}
除了转换失败在运行时:
System.InvalidCastException occurred
Message="Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlTableRow' to type 'System.Web.UI.WebControls.WebControl'."
原来,塔牛逼HtmlTableRow
比WebControl
不同的父层次结构:
HtmlTableRow
: HtmlContainerControl
: HtmlControl
: System.Web.UI.Control
这是最终其中的WebControl来自
WebControl
: System.Web.UI.Control
所以我改变了代码,尝试使用System.Web.UI.Control代替:
Control row = (Control)e.Item.FindControl("announcementRow");
if (row != null)
row.CssClass = row.CssClass + " announcementItemUnread";
但Control
不包含定义CssClass
:
'System.Web.UI.Control' does not contain a definition for 'CssClass'
那么我如何在DataBind中为<TR>
元素设置css类名?
HtmlTableRow不包含CssName属性之一: “System.Web.UI.HtmlControls.HtmlTableRow”不包含定义“的CssClass” – 2008-10-08 15:46:00