gridview - 如何根据内容(日期)更改网格视图字段的背景颜色?
问题描述
在高处和低处搜寻后,我找不到任何真正有效的东西。我想做的只是根据日期显示带有背景颜色的日期字段(显示此内容的会员表已过期)。这是一个用 C++ 编写的相对简单的 asp.net 网站(我继承了两年前支持这个的工作!)
<asp:GridView ID="MembershipGrid" runat="server" AutoGenerateColumns="false"
CellPadding="2" CssClass="ExistingUsersTable" Width="100%"
DataKeyNames="Mem_Number" AllowPaging="True"
OnPageIndexChanging="AustinMembershipGrid_PageIndexChanging"
AllowSorting="True" >
<FooterStyle BackColor="Teal" />
<RowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Mem_NumberPrefix" HeaderText="Prefix" HeaderStyle-BackColor="PowderBlue" HeaderStyle-Font-Italic="true" ItemStyle-HorizontalAlign="Right" ItemStyle-Width="15px"/>
<asp:BoundField DataField="Mem_Number" HeaderText="Member Number" HeaderStyle-BackColor="PowderBlue" HeaderStyle-Font-Italic="true" ItemStyle-Width="40px" ItemStyle-BackColor="PaleGreen"/>
<asp:BoundField DataField="Mem_Firstnames" HeaderStyle-BackColor="PowderBlue" HeaderText="Firstnames" />
<asp:BoundField DataField="Mem_Lastname" HeaderStyle-BackColor="PowderBlue" HeaderText="Surname" />
<asp:BoundField DataField="Mem_ExpiryDate" DataFormatString="{0:d}" HeaderStyle-BackColor="PowderBlue"
HeaderText="Membership Expiry Date" ItemStyle-Width="11" />
<asp:CheckBoxField DataField="Mem_Deactive" HeaderStyle-BackColor="PowderBlue" HeaderText="Deactive" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="10"/>
</Columns>
<PagerStyle ForeColor="Black" HorizontalAlign="Right" BorderColor="#F7F7DE"
CssClass="PagerStyles" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
<HeaderStyle Font-Bold="True" HorizontalAlign="Left" />
<EditRowStyle BackColor="#F6F5F2" />
<AlternatingRowStyle CssClass="alt" />
</asp:GridView>
因此,如果 Mem_Expiry 日期在今天之前,我想用红色背景显示它,如果相等或之后,用淡绿色背景显示。我在这里找到的大部分内容似乎都是针对 C# 代码的。
解决方案
在 Gridview 段中,我添加了 onrowdatabound="gridView1_DataBinding2"
然后在 aspx.cs 文件中:
protected void gridView1_DataBinding2(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DateTime expiryDate = Convert.ToDateTime(e.Row.Cells[4].Text);
if (expiryDate < DateTime.Today)
{
e.Row.Cells[4].BackColor = System.Drawing.Color.DarkRed;
e.Row.Cells[4].ForeColor = System.Drawing.Color.White;
}
else
{
e.Row.Cells[4].BackColor = System.Drawing.Color.PaleGreen;
}
}
}
所以当过期时,日期是深红色的白色,如果还有时间去,它是浅绿色的背景。只是对我找到的代码进行了一些试验..
推荐阅读
- google-cloud-platform - 托管在 Google Cloud Run 中的 Node Express REST
- powershell - powershell -NonInteractive -ExecutionPolicy 绕过 -Command
- list - 如何删除/调整列表中的分隔符?
- android - 使用 Play Services Location API 获取周边地点
- c# - 非种子节点加入失败。灯塔错误丢弃非本地收件人的消息 [Akka.Actor.ActorSelectionMessage]
- gitlab - GitLab 页面 URL 不是我所期望的
- c# - 程序尝试同时发送数百个 http 请求时抛出 SocketException
- html - 为什么用链接包装图像会改变页面的布局?
- python - Ubuntu 升级后,Django 崩溃并且日志显示“ModuleNotFoundError: No module named 'encodings'”
- matlab - 降低 MATLAB 上用于绘图的 GPU 处理能力