是否有可能在CssClass属性中执行条件语句?

问题描述:

我正在使用中继器控制。我的一个项目属性是布尔值。我知道我可以在Text属性做一个条件语句,如:是否有可能在CssClass属性中执行条件语句?

Text='<%# Item.Boolean ? "Text 1" : "Text 2" %> 

但是,如果我想相同的文字,而是根据布尔不同的CSS样式?

代码如下所示:

CssClass=<%# Item.Boolean ? "CssClass1" : "CssClass2" %> 
+2

你有没有......尝试过吗? – Rawling

+0

我不在工作,所以我现在无法访问视觉工作室。我只是好奇。 – proseidon

+0

啊,够公平的。在这种情况下:是的它应该工作,它只是另一个'String'属性 - 尽管您可能需要使用与您的“Text”示例中相同的单引号。 – Rawling

你不能这样做。不是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; 
}