asp.net如何在gridview上设置条件
因此,我将一个网格连接到一个数据库,其中我的数据库只包含1、2和3的值。我想让每个有1的盒子都是绿色的,2是黄色的,3是红色的 我的问题是我应该把条件代码放在哪里,我应该用什么语言来做 下面的信息只是我的gridview和我链接它的数据asp.net如何在gridview上设置条件,asp.net,gridview,conditional-statements,Asp.net,Gridview,Conditional Statements,因此,我将一个网格连接到一个数据库,其中我的数据库只包含1、2和3的值。我想让每个有1的盒子都是绿色的,2是黄色的,3是红色的 我的问题是我应该把条件代码放在哪里,我应该用什么语言来做 下面的信息只是我的gridview和我链接它的数据 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" > <Colu
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
>
<Columns>
<asp:BoundField DataField="Line" HeaderText="Line" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" ItemStyle-BackColor="#FF6699" />
<asp:BoundField DataField="Jan" HeaderText="Jan" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Feb" HeaderText="Feb" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Mar" HeaderText="Mar" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Apr" HeaderText="Apr" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="May" HeaderText="May" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Jun" HeaderText="Jun" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Jul" HeaderText="Jul" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Aug" HeaderText="Aug" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Sep" HeaderText="Sep" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Oct" HeaderText="Oct" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Nov" HeaderText="Nov" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Dec" HeaderText="Dec" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:dashboardConnectionString %>"
SelectCommand="SELECT
line AS Line,
[2012-01-31] AS 'Jan',
[2012-02-29] AS 'Feb',
[2012-03-31] AS 'Mar',
[2012-04-30] AS 'Apr',
[2012-05-31] AS 'May',
[2012-06-30] AS 'Jun',
[2012-07-31] AS 'Jul',
[2012-08-31] AS 'Aug',
[2012-09-30] AS 'Sep',
[2012-10-31] AS 'Oct',
[2012-11-30] AS 'Nov',
[2012-12-31] AS 'Dec'
FROM
(Select line, report_month, state FROM [Monthly_State]) AS sourcetable
PIVOT
(
MAX(state)
FOR report_month IN ([2012-01-31], [2012-02-29], [2012-03-31], [2012-04-30], [2012-05-31], [2012-06-30], [2012-07-31], [2012-08-31], [2012-09-30], [2012-10-31], [2012-11-30], [2012-12-31])
) as pivottable; ">
</asp:SqlDataSource>
在网格视图的行数据绑定事件中,您必须放置条件
void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
// example
// You have to give the correct index ( starts from 0 ). Cell[0] will be the first column in your grid
if( e.Row.Cells[0].Text = "1" )
{
e.Row.Cells[0].BackColor = System.Drawing.Color.Green;
}
if( e.Row.Cells[1].Text = "2" )
{
e.Row.Cells[1].BackColor = System.Drawing.Color.Yellow;
}
if( e.Row.Cells[2].Text = "3" )
{
e.Row.Cells[3].BackColor = System.Drawing.Color.Red;
}
// In the same way do for other columns
}
}
由于不能在CssClass属性中使用数据绑定表达式,因此必须使用代码隐藏。 首先,您必须将列转换为模板。 而不是:
<asp:BoundField DataField="Jan" HeaderText="Jan" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Right" />
写:
<asp:TemplateField HeaderText="Jan">
<ItemTemplate>
<asp:Label ID="lblJan" runat="server" Text="<%# Eval("Jan") %>" />
</ItemTemplate>
</asp:TemplateField>
然后,您可以使用RowDataBound找到带有
e.Row.FindControl(“lblJan”)
的控件,并根据其值为其设置css类。我将使用模板字段来完成此操作,并在代码隐藏中声明一个公共方法,如下所示
在代码背后
public string GetClass(object g)
{
//处理该值并返回所需的css类名
}
由于某种原因,当我插上电源时,它就不工作了。根据下面的答案,我必须改变我制作网格的方式。为了让上面的代码工作,这是真的吗?我不知道为什么这不起作用。。。我会检查的。下面的答案也是正确的。为此,您必须将所有绑定列更改为Amiram提到的模板字段列。然后,你必须得到我提到的每一列的引用,但是有一点变化。像这样
Label l1=(Label)e.Row.FindControl(“Label1”)代码>通过这种方式,您将获得ref,然后设置其背景色。