我有多个TemplateFields
,其中每个CssClass
包含两个我希望根据代码隐藏文件中的布尔isGov
更改的label
。
如下所示,我在.aspx文件中有一个if / else语句,使用相同的headertemplate
{{1}来更改boolean
中isGov
的文本我想用来改变CssClass
。但是,使用相同的概念不起作用。我想知道这样做的正确方法是什么?
这是当前的代码,我试图改变的两个CssClass
是最后两个:
<asp:TemplateField HeaderText="SUN">
<footertemplate>
<asp:Label ID="lblD1F" runat="server" ForeColor="white" Width="35px" Text="<%# GetTotal(0).ToString() %>" />
</footertemplate>
<headertemplate>
<asp:Label ID="lblD1H" runat="server" CssClass="hdr_Day" >
<% if (isGov) { %>
MON
<% } else { %>
SUN
<% } %>
</asp:Label><br />
<asp:Label ID="lblD1D" runat="server" CssClass="hdr_Date" Text='<%# _displayDate.ToString("MM/dd") %>'></asp:Label>
</headertemplate>
<itemtemplate>
<anthem:TextBox id="tbDay1"
runat="server"
Text='<%# Bind("Day1") %>'
---> This one CssClass="tbWeekEnd"
AutoCallBack="true" />
<asp:Label ID="lblDay1" runat="server" Visible="false" Text='<%# Bind("Day1") %>'></asp:Label>
</itemtemplate>
<itemstyle cssclass="cell_weekend" /> <--- And this one
</asp:TemplateField>
我也尝试过:
CssClass='<%# isGov ? "cell_weekday" : "cell_weekend" %>'
似乎没有识别布尔isGov
。当我使用if
语句时,Intellisense会选择它,但在尝试更改CssClass
时则不会。
编辑:基本上发生了什么,网格视图包含一些列,其中14列在标题列中有一个日期。日期根据bool isGov
从周日或周一开始,CssClass突出显示周末。所以我想改变基于bool的CssClass,但仅限于属于周末细胞的细胞。
答案 0 :(得分:2)
此处的问题是无法使用数据绑定值初始化ItemStyle
元素。正确的方法是处理GridView的RowDataBound事件并在那里设置类:
protected void GridViewID_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// if you want the whole row class
e.Row.CssClass = isGov ? "cell_weekday" : "cell_weekend";
// if you want specific cell class
e.Row.Cells[2] = isGov ? "cell_weekday" : "cell_weekend";
}
}
单元格索引基于0,对应于标记中定义的列顺序。
至于TextBox的类,它应该像你使用<%# isGov ? ...
一样运行。但是不要指望intellisense在这里提供帮助 - 请注意你在字符串中编写代码,所以从IDE的角度来看,这只是一个字符串值(除非在VS的最新版本中内置了一些很酷的功能,我没有听说过)< / p>
答案 1 :(得分:1)
如您所发现,您无法使用属性中的服务器标记(&lt;%...%&gt;)在ASP.NET控件(&lt; asp:...&gt;)上设置属性。相反,您可以添加一行代码来设置CssClass属性:
<% lblD1H.CssClass = isGov ? "cell_weekday" : "cell_weekend"; %>
编辑:如果这不起作用(因为在模板中),您可以尝试使用纯HTML而不是ASP标签:
<label id="lblD1D" class='<%# isGov ? "cell_weekday" : "cell_weekend" %>'>
<%# _displayDate.ToString("MM/dd") %>
</label>