在asp.net c#中更改网格视图的选定行的颜色

时间:2015-02-12 10:45:30

标签: c# css asp.net

我有一个网格视图来显示消息列表。每行都有一个查看按钮,可以在弹出框中看到消息的更多详细信息。

现在我想在读取消息后改变行的颜色,即灰色。最初,网格视图中消息的颜色也会不同。读取消息的行颜色应与未读消息不同。一旦阅读,颜色将永久改变。 新添加的未读行消息必须是彩色(红色)并且一次读取(灰色)。

    <asp:GridView CssClass="myGridStyle" class="gridview"  ID="showmsg" runat="server" AutoGenerateColumns="false" Width="970px"
            AlternatingRowStyle-BackColor = "#e6e6e6"   DataKeyNames ="mesg_id" GridLines="none">
            <Columns >
                  <asp:TemplateField ItemStyle-Width="150px"  ItemStyle-Height="30" HeaderStyle-HorizontalAlign="center"  HeaderText="From">
                <ItemTemplate  >
                 <asp:Label ID="lblfname"  align="center"  runat="server" Text='<%#Eval( "from_name") %>'></asp:Label>
                </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField ItemStyle-Width="150px"  ItemStyle-Height="30" HeaderStyle-HorizontalAlign="center" HeaderText="Date">
                <ItemTemplate >
                 <asp:Label ID="lbldate" align="center"  runat="server" Text='<%#Eval( "sent_date","{0:M-dd-yyyy}") %>'></asp:Label>
                </ItemTemplate>
                </asp:TemplateField>   

                <asp:TemplateField ItemStyle-Width="350px"   ItemStyle-Height="30" HeaderStyle-HorizontalAlign="center" HeaderText="Subject">
                <ItemTemplate>
                 <asp:Label ID="lblsub"  align="center" runat="server" Text='<%#Eval( "subject") %>'></asp:Label>
                </ItemTemplate>
                </asp:TemplateField>   
                  <asp:TemplateField HeaderText=""  ItemStyle-Height="30" ItemStyle-Width="60px" >   
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkView"  align="center" Font-Size="14px" font-family="calibri" Text="View"  OnClick="lnkEdit_Click" runat="server"></asp:LinkButton>
                    </ItemTemplate>
              </asp:TemplateField>                       
     </Columns>  
            <emptydatatemplate>  <div style="text-align:center;font-weight:bold">You have not recieved any messages</div> 
           </emptydatatemplate>           
            <HeaderStyle BackColor="#929292" ForeColor="White"  />
            <RowStyle />
        </asp:GridView>
    <br/><br/><br/>    <asp:Button ID="btnShowPopup" runat="server" style="display:none" />

<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnlpopup"
CancelControlID="btnCancel" BackgroundCssClass="modalBackground">
</asp:ModalPopupExtender>       
</td></tr>
</table></asp:Panel>
<asp:Panel ID="pnlpopup" runat="server" BackColor="White" Height="269px" Width="400px" style="display:none" >
<table width="100%" style="border:Solid 3px gray; width:100%; height:100%;" cellpadding="0" cellspacing="0" >
<tr style="background-color: gray">
<td colspan="2" style=" height:10%; color:White; font-weight:bold; font-size:larger" align="center">Message Details</td>
</tr>
<tr>
<td align="left" class="style1" >
 <div >  &nbsp;&nbsp; From:</div>
</td>
<td class="style2">
<asp:Label ID="lblfrom" runat="server" Font-Size="20px"></asp:Label>
</td>
</tr>
<tr>
<td align="left" class="style3">
<div>  &nbsp;&nbsp; Message:</div>
</td>
<td class="style4">
<asp:Label ID="lblmsg" runat="server" Font-Size="20px"></asp:Label>
</td>
</tr>

<tr>
<td class="style5">
</td>
<td>
<asp:Button ID="btnCancel" runat="server" Text="OK" Width="60px" />
</td>
</tr>
</table>

请建议必须做些什么。

1 个答案:

答案 0 :(得分:0)

您必须存储已在某处读取的消息。

如果这是在服务器端完成的,并且考虑到当点击'lnkView'LinkBut​​ton时你正在回发的事实你可以使用OnRowDataBound并使用存储的'read'标志设置那里的行的颜色。

protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(read)
    {
         e.Row.BackColor = System.Drawing.Color.Red;
    }
    else
    {
        e.Row.BackColor = System.Drawing.Color.Blue;
    }
}