是否有可能在CssClass属性中执行条件语句?
问题描述:
我正在使用中继器控制。我的一个项目属性是布尔值。我知道我可以在Text属性做一个条件语句,如:是否有可能在CssClass属性中执行条件语句?
Text='<%# Item.Boolean ? "Text 1" : "Text 2" %>
但是,如果我想相同的文字,而是根据布尔不同的CSS样式?
代码如下所示:
CssClass=<%# Item.Boolean ? "CssClass1" : "CssClass2" %>
答
你不能这样做。不是runat服务器类型的标签,所以它不能尝试执行那里的逻辑。相反,您需要在Page_PreRenderComplete中设置gridview的属性。
使用类似下面这样做:
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
this.FormatGridviewRows();
}
private void FormatGridviewRows()
{
foreach (GridViewRow row in this.GridView1.Rows)
{
// Don't attempt changes on header/select/etc. Only Datarow
if (row.RowType != DataControlRowType.DataRow) continue;
// At least make sure everything has the default class
row.CssClass = "gridViewRow";
// Don't affect the first row
if (row.DataItemIndex <= 0) continue;
if (row.RowState == DataControlRowState.Normal || row.RowState == (DataControlRowState.Normal^DataControlRowState.Edit))
{
row.CssClass = !this.cbForceOverride.Checked
? "gridViewRow"
: "gridViewRow gridViewRowDisabled";
}
if (row.RowState == DataControlRowState.Alternate || row.RowState == (DataControlRowState.Alternate^DataControlRowState.Edit))
{
row.CssClass = !this.cbForceOverride.Checked
? "gridViewAltRow"
: "gridViewAltRow gridViewAltRowDisabled";
}
}
}
,然后在你的样式表:
.gridViewRow {
background-color: #f2f2f2;
}
.gridViewAltRow {
background-color: #ffffff;
}
.gridViewRow, .gridViewAltRow {
color: #000000;
}
.gridViewRowDisabled, .gridViewAltRowDisabled {
color: #DDDDDD;
}
你有没有......尝试过吗? – Rawling
我不在工作,所以我现在无法访问视觉工作室。我只是好奇。 – proseidon
啊,够公平的。在这种情况下:是的它应该工作,它只是另一个'String'属性 - 尽管您可能需要使用与您的“Text”示例中相同的单引号。 – Rawling