在GridView中要使成绩一列小于60字体显示红色时出错
代码如下:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (Convert.ToInt32(e.Row.Cells[6].Text.Trim()) <= 0
|| Convert.ToInt32(e.Row.Cells[6].Text.Trim()) > 60)
{
e.Row.Cells[6].ForeColor = System.Drawing.Color.Red;
}
}
提示输入字符串出错。
[解决办法]
e.Row.Cells[6].Text.Trim()是整型的字符串嘛?
看看e.Row.Cells[6].Text.Trim()值是什么?
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string test=e.Row.Cells[6].Text.Trim();//看看这里的值是什么?
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (Convert.ToInt32(e.Row.Cells[6].Text.Trim()) <= 0
[解决办法]
Convert.ToInt32(e.Row.Cells[6].Text.Trim()) < 60)
{
e.Row.Cells[6].ForeColor = System.Drawing.Color.Red;
}
}
<form id="form1" runat="server">
<div>
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" onrowdatabound="gv_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblGrade" runat="server" Text='<%#Eval("Grade") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrade();
}
}
protected void BindGrade()
{
var list = new[]{
new{Grade=30},
new{Grade=52},
new{Grade=55},
new{Grade=75},
new{Grade=60},
new{Grade=80},
new{Grade=50}
}.ToList();
gv.DataSource = list;
gv.DataBind();
}
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblGrade = e.Row.FindControl("lblGrade") as Label;
int grade = Convert.ToInt32(lblGrade.Text);
if (grade < 60)
{
lblGrade.ForeColor = System.Drawing.Color.Red;
}
}
}