在不更改边框颜色的情况下更改 GridView 单元格中的文本颜色
Posted
技术标签:
【中文标题】在不更改边框颜色的情况下更改 GridView 单元格中的文本颜色【英文标题】:Change Color Of Text in GridView Cell Without Changing Border Color 【发布时间】:2014-06-16 16:05:47 【问题描述】:我正在网格视图中显示数据,并希望有条件地更改单元格中文本的颜色。
等上RowDataBound
的网格
if (e.Row.RowType == DataControlRowType.DataRow)
if (((SurveyListHeader)(e.Row.DataItem)).PositionalConfidence != "G1" && ((SurveyListHeader)(e.Row.DataItem)).PositionalConfidence != "G3")
e.Row.Cells[3].ForeColor = System.Drawing.Color.Red;
//e.Row.Cells[3].BorderColor = System.Drawing.Color.Black;
if (((SurveyListHeader)(e.Row.DataItem)).PositionalConfidence != "G2" && ((SurveyListHeader)(e.Row.DataItem)).PositionalConfidence != "G3")
e.Row.Cells[4].ForeColor = System.Drawing.Color.Red;
//e.Row.Cells[4].BorderColor = System.Drawing.Color.Black;
不过,这也会导致边框颜色发生变化。
我尝试将边框颜色改回黑色,但这不起作用。 我已经尝试在单元格的 CSSStyleCollection 中添加一个样式项,仍然没有任何乐趣。
我看到其他人遇到过问题,但没有适合我的答案。有什么建议吗?
【问题讨论】:
这是因为你正在改变Cell
的颜色。建议使用标签控件作为模板列并更改控件的颜色。
@HassanNisar 如果是这种情况,ForeColor 和 BorderColor 的用途是什么?为什么要把它们分开?
这个我需要弄清楚。
你能告诉我们markup
的gridview
吗?
【参考方案1】:
对于偶然发现此问题的任何其他人,您可以通过更改前景色然后将所有边框改回黑色来使其工作 - 可能并不理想,但更改所有单独的标签将是一场噩梦。下面的代码(请注意,您必须更改每个单元格而不仅仅是行边框)其中 grdSearchResults 是您的网格视图:
protected void grdSearchResults_RowDataBound(object sender, GridViewRowEventArgs e)
if (e.Row.RowType == DataControlRowType.DataRow)
if (e.Row.Cells[1].Text == "Closed")
e.Row.ForeColor = System.Drawing.Color.LightGray;
for (int i = 0; i < grdSearchResults.Columns.Count; i++)
e.Row.Cells[i].BorderColor = System.Drawing.Color.Black;
【讨论】:
【参考方案2】:我在更改为红色之前使用将边框颜色填充为黑色,然后我使用 else 块为未更改为红色的单元格填充黑色...效果很好。在这里,我们可以使用任何单元格编号。例如,我使用了“3”。
if (e.Row.RowType == DataControlRowType.DataRow)
if (e.Row.Cells[3].Text.StartsWith("-"))
// change the color
e.Row.Cells[3].BorderColor = System.Drawing.Color.Black;
e.Row.Cells[3].ForeColor = System.Drawing.Color.Red;
else
e.Row.Cells[3].BorderColor = System.Drawing.Color.Black;
【讨论】:
【参考方案3】:我在 css 中设置了边框颜色,它不会像您的代码一样在除 firefox 之外的几乎所有浏览器中更改边框。
.Gridview td
border-right: lightsteelblue 1px solid;
border-top: lightsteelblue 1px solid;
border-left: lightsteelblue 1px solid;
border-bottom: lightsteelblue 1px solid;
【讨论】:
以上是关于在不更改边框颜色的情况下更改 GridView 单元格中的文本颜色的主要内容,如果未能解决你的问题,请参考以下文章