Строка таблицы создается с помощью жереха: Ретранслятор:ASP.NET: Как установить класс css элемента управления во время DataBind?
<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'
так как установить имя класса css для элемента <TR>
во время DataBind?
HtmlTableRow не содержит свойство либо CssName: «System.Web.UI.HtmlControls.HtmlTableRow» не содержит определения для «CssClass» – 2008-10-08 15:46:00