Как изменить цвет фона поля сетки в зависимости от содержимого (даты)? - PullRequest
0 голосов
/ 03 февраля 2019

Охотясь высоко и низко, я не могу найти ничего, что действительно работает.Все, что я хочу сделать, чтобы отобразить поле даты с Backcolor на основе даты (таблица членства, показывающая, что это истекло).Это относительно простой сайт asp.net, написанный на C ++ (я унаследовал работу по поддержке этого два года назад!)

<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 #.

1 Ответ

0 голосов
/ 05 февраля 2019

В сегменте 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;
            }
        }
    }

Таким образом, когда срок действия истек, дата становится белой на темно-красном, и еслиеще успел поехать, он на бледно-зеленом фоне.Просто немного поэкспериментировал с кодом, который я нашел ..

...