我有一个网格视图来显示消息列表。每行都有一个查看按钮,可以在弹出框中看到消息的更多详细信息。
现在我想在读取消息后改变行的颜色,即灰色。最初,网格视图中消息的颜色也会不同。读取消息的行颜色应与未读消息不同。一旦阅读,颜色将永久改变。 新添加的未读行消息必须是彩色(红色)并且一次读取(灰色)。
<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 > 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> 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>
请建议必须做些什么。
答案 0 :(得分:0)
您必须存储已在某处读取的消息。
如果这是在服务器端完成的,并且考虑到当点击'lnkView'LinkButton时你正在回发的事实你可以使用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;
}
}