如何根据条件将Repeater控件中的某一行改变颜色?

qwry2008 2013-01-22 03:45:46
前台代码:


<table class="table2" width="100%">
<tr>
<th style="width: 6%">
操作
</th>
<th style="width: 8%">
特种人员编号
</th>
<th style="width: 6%">
姓名
</th>
<th style="width: 10%">
特种作业类型
</th>
<th style="width: 7%">
联系方式
</th>
<th style="width: 10%">
特种作业证编号
</th>
<th style="width: 10%">
发证单位
</th>
<th style="width: 11%">
认证有效期开始时间
</th>
<th style="width: 11%">
认证有效期结束时间
</th>
<th style="width:6%">
复审时间
</th>
<th style="width: 6%">
是否在职
</th>
<th style="width: 10%">
备注
</th>
</tr>
<asp:Repeater ID="rptDataList" runat="server"
OnItemCommand="rptDataList_ItemCommand"
onitemdatabound="rptDataList_ItemDataBound">
<ItemTemplate>
<tr class="light">
<td align="center">
<a href="javascript:Edit('<%#Eval("ESID") %>')">编辑</a>
<asp:LinkButton ID="lbtnDel" runat="server" CommandName="delete" CommandArgument='<%# Eval("ESID") %>'
OnClientClick="javascript:return confirm('确定删除吗?')">删除</asp:LinkButton>
</td>
<td align="center">
<%#Eval("ESID")%>
</td>
<td align="center">
<%#Eval("Name") %>
</td>
<td align="center">
<%# Eval("ESTypeName")%>
</td>
<td align="center">
<%# Eval("Phone")%>
</td>
<td>
<%# Eval("CertificateNo")%>
</td>
<td>
<%# Eval("IssuingUnit")%>
</td>
<td align="center">
<%# Eval("CertificateSDate", "{0:yyyy-MM-dd}")%>
</td>
<td align="center">
<%# Eval("CertificateEDate", "{0:yyyy-MM-dd}")%>
</td>
<td align="center">

<asp:Label ID="lblFSDate" runat="server" Text='<%#Eval("FSDate","{0:yyyy-MM-dd}") %>'></asp:Label>
</td>
<td align="center">
<%# Eval("IsOnjob").ToString()=="1"?"<span style='color:green'>在职</span>":"<span style='color:red'>离职</span>" %>
</td>
<td>
<%# Eval("Remark")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="gridrowalt light">
<td align="center">
<a href="javascript:Edit('<%#Eval("ESID") %>')">编辑</a>
<asp:LinkButton ID="lbtnDel" runat="server" CommandName="delete" CommandArgument='<%# Eval("ESID") %>'
OnClientClick="javascript:return confirm('确定删除吗?')">删除</asp:LinkButton>
</td>
<td align="center">
<%#Eval("ESID")%>
</td>
<td align="center">
<%#Eval("Name") %>
</td>
<td align="center">
<%# Eval("ESTypeName")%>
</td>
<td align="center">
<%# Eval("Phone")%>
</td>
<td>
<%# Eval("CertificateNo")%>
</td>
<td>
<%# Eval("IssuingUnit")%>
</td>
<td align="center">
<%# Eval("CertificateSDate", "{0:yyyy-MM-dd}")%>
</td>
<td align="center">
<%# Eval("CertificateEDate", "{0:yyyy-MM-dd}")%>
</td>
<td align="center">
<asp:Label ID="lblFSDate" runat="server" Text='<%#Eval("FSDate","{0:yyyy-MM-dd}") %>'></asp:Label>
</td>
<td align="center">
<%# Eval("IsOnjob").ToString()=="1"?"<span style='color:green'>在职</span>":"<span style='color:red'>离职</span>" %>
</td>
<td>
<%# Eval("Remark")%>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
<tr id="Tr1" runat="server" visible='<%#bool.Parse((rptDataList.Items.Count==0).ToString())%>'>
<td colspan="12" align="center">
<asp:Label ID="lblInfo" runat="server" Text="暂无数据"></asp:Label>
</td>
</tr>
</FooterTemplate>
</asp:Repeater>
</table>


后台:

protected void rptDataList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{


Label lblFSDate = e.Item.FindControl("lblFSDate") as Label;
//HtmlTableRow col = e.Item.FindControl("GetStyle") as HtmlTableRow;
if (!string.IsNullOrEmpty(lblFSDate.Text))
{

DateTime dt1 = Convert.ToDateTime(lblFSDate.Text);
DateTime dt2 = DateTime.Now;

if (dt2<dt1&&dt2.AddMonths(3)>dt1)
{
lblFSDate.ForeColor = System.Drawing.Color.Orange;
//col.BgColor = "#FF6100";
}
else
{
lblFSDate.ForeColor = System.Drawing.Color.Black;
//col.BgColor = "#000000";

}
}

}
}


现在如何将复审时间在3个月内的那些行数据用橙色的颜色显示出来?
...全文
504 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwry2008 2013-01-22
  • 打赏
  • 举报
回复
引用 10 楼 gxingmin 的回复:
晕啊,一句话能搞定的,非得这么复杂吗? XML/HTML code ? 1 <%# ((DateTime)Eval("FSDate")).AddMonths(3)<DateTime.Now ? "gridrowalt light":"light" %> 这样不行吗?我的页面都是类似这样来改变repeater行的样式
这个肯定可以,我想保留原来样式的同时,在3个月内的改变颜色
一一一一 2013-01-22
  • 打赏
  • 举报
回复
引用 14 楼 qwry2008 的回复:
引用 12 楼 hjywyj 的回复:<tr style='<%# Convert.ToDateTime(Eval("FSDate").ToString()).AddMonths(3)<DateTime.Now ? "color:red":"color:#000000" %>' 这样写不行吗? 这样写可以,我想保留原来的样式的同时,如果时间在3个月内的,将那几行的颜……
<tr style='<%# Convert.ToDateTime(Eval("FSDate").ToString()).AddMonths(3)<DateTime.Now ? "color:red":"" %>' 那你:后面那个放空就可以了
qwry2008 2013-01-22
  • 打赏
  • 举报
回复
引用 12 楼 hjywyj 的回复:
<tr style='<%# Convert.ToDateTime(Eval("FSDate").ToString()).AddMonths(3)<DateTime.Now ? "color:red":"color:#000000" %>' 这样写不行吗?
这样写可以,我想保留原来的样式的同时,如果时间在3个月内的,将那几行的颜色改变
qwry2008 2013-01-22
  • 打赏
  • 举报
回复
引用 11 楼 yezhenhua101 的回复:
你是前后三个月吗? 比如个月1月,12月、1月、2月都算?
这个是跟当前时间进行比较的,比当前时间大的
  • 打赏
  • 举报
回复
<tr style='<%# Convert.ToDateTime(Eval("FSDate").ToString()).AddMonths(3)<DateTime.Now ? "color:red":"color:#000000" %>' 这样写不行吗?
一一一一 2013-01-22
  • 打赏
  • 举报
回复
你是前后三个月吗? 比如个月1月,12月、1月、2月都算?
gxingmin 2013-01-22
  • 打赏
  • 举报
回复
晕啊,一句话能搞定的,非得这么复杂吗?
<%# ((DateTime)Eval("FSDate")).AddMonths(3)<DateTime.Now ? "gridrowalt light":"light" %> 
这样不行吗?我的页面都是类似这样来改变repeater行的样式
一一一一 2013-01-22
  • 打赏
  • 举报
回复
if (dt2<dt1&&dt2.AddMonths(3)>dt1)这个时间比较有问题吧 你把这个条件去掉看看, 或改成下面这样 DateTime dt1 = Convert.ToDateTime(lblFSDate.Text); DateTime dt2 = DateTime.Now; if(DateTime.Now-dt1).Month<3)
qwry2008 2013-01-22
  • 打赏
  • 举报
回复
如上图,我想将这3个黄色时间的列变成这3行是黄色的
  • 打赏
  • 举报
回复
 protected void rptResult_ItemDataBound(object sender, RepeaterItemEventArgs e)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
switch (你自己判断的条件)
{
case "1":
((Label)e.Item.FindControl("labCustomerID")).ForeColor = System.Drawing.Color.Blue;
break;
case "3":
((Label)e.Item.FindControl("labCustomerID")).ForeColor = System.Drawing.Color.Red;

break;
case "5":
((Label)e.Item.FindControl("labCustomerID")).ForeColor = System.Drawing.ColorTranslator.FromHtml("#926a1e");
break;
default:
break;
}
}
qwry2008 2013-01-22
  • 打赏
  • 举报
回复
引用 4 楼 yezhenhua101 的回复:
<tr class="light" <asp:Literal ID="Literal1" runat="server"></asp:Literal> > <td align="center"> <a href="javascript:Edit('<%#Eval("ESID") %>')">编……

这个虽然有用,时间都在3个月内,但是只有一行变色了,剩下的2行还没变色,如上图,
  • 打赏
  • 举报
回复
style='<%# (DateTime.Now-Convert.ToDateTime(Eval("FSDate").ToString())).Month<3 ? "color:red":"color:#000000" %>'
一一一一 2013-01-22
  • 打赏
  • 举报
回复
<tr class="light" <asp:Literal ID="Literal1" runat="server"></asp:Literal> > <td align="center"> <a href="javascript:Edit('<%#Eval("ESID") %>')">编辑</a> <asp:LinkButton ID="lbtnDel" runat="server" CommandName="delete" CommandArgument='<%# Eval("ESID") %>' OnClientClick="javascript:return confirm('确定删除吗?')">删除</asp:LinkButton> </td> <td align="center"> <%#Eval("ESID")%> ========tr放一个Literal if (dt2<dt1&&dt2.AddMonths(3)>dt1) { lblFSDate.ForeColor = System.Drawing.Color.Orange; //col.BgColor = "#FF6100"; Literal lt= e.Item.FindControl("Literal1") as Literal; lt.Text="bgcolor='#FF9900'"; }
gxingmin 2013-01-22
  • 打赏
  • 举报
回复
那就把那个<%# Container.ItemIndex%2==0?"light":"gridrowalt light" %>条件改成时间比较嘛 <%# ((DateTime)Eval("FSDate")).AddMonths(3)<DateTime.Now ? "gridrowalt light":"light" %>
qwry2008 2013-01-22
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
tr里通过 Container.ItemIndex来判断 决定用什么class XML/HTML code ? 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869……
你可能没明白我的意思,我是想根据
  <td align="center">
                          
                          <asp:Label ID="lblFSDate" runat="server" Text='<%#Eval("FSDate","{0:yyyy-MM-dd}") %>'></asp:Label>
                        </td>
这个绑定的时间来给复审时间在3个月内那些行改边颜色
gxingmin 2013-01-22
  • 打赏
  • 举报
回复
tr里通过 Container.ItemIndex来判断 决定用什么class

 <table class="table2" width="100%">
            <tr>
                <th style="width: 6%">
                    操作
                </th>
                <th style="width: 8%">
                    特种人员编号
                </th>
                <th style="width: 6%">
                    姓名
                </th>
                <th style="width: 10%">
                    特种作业类型
                </th>
                <th style="width: 7%">
                    联系方式
                </th>
                <th style="width: 10%">
                    特种作业证编号
                </th>
                <th style="width: 10%">
                    发证单位
                </th>
                <th style="width: 11%">
                    认证有效期开始时间
                </th>
                <th style="width: 11%">
                    认证有效期结束时间
                </th>
                <th style="width:6%">
                  复审时间
                </th>
                <th style="width: 6%">
                    是否在职
                </th>
                <th style="width: 10%">
                    备注
                </th>
            </tr>
            <asp:Repeater ID="rptDataList" runat="server" 
                OnItemCommand="rptDataList_ItemCommand" 
                onitemdatabound="rptDataList_ItemDataBound">
                <ItemTemplate>
                     <tr class="<%# Container.ItemIndex%2==0?"light":"gridrowalt light" %>">
                        <td align="center">
                            <a href="javascript:Edit('<%#Eval("ESID") %>')">编辑</a>
                            <asp:LinkButton ID="lbtnDel" runat="server" CommandName="delete" CommandArgument='<%# Eval("ESID") %>'
                                OnClientClick="javascript:return confirm('确定删除吗?')">删除</asp:LinkButton>
                        </td>
                        <td align="center">
                            <%#Eval("ESID")%>
                        </td>
                        <td align="center">
                            <%#Eval("Name") %>
                        </td>
                        <td align="center">
                            <%# Eval("ESTypeName")%>
                        </td>
                        <td align="center">
                            <%# Eval("Phone")%>
                        </td>
                        <td>
                            <%# Eval("CertificateNo")%>
                        </td>
                        <td>
                            <%# Eval("IssuingUnit")%>
                        </td>
                        <td align="center">
                            <%# Eval("CertificateSDate", "{0:yyyy-MM-dd}")%>
                        </td>
                        <td align="center">
                            <%# Eval("CertificateEDate", "{0:yyyy-MM-dd}")%>
                        </td>
                        <td align="center">
                          
                          <asp:Label ID="lblFSDate" runat="server" Text='<%#Eval("FSDate","{0:yyyy-MM-dd}") %>'></asp:Label>
                        </td>
                        <td align="center">
                            <%# Eval("IsOnjob").ToString()=="1"?"<span style='color:green'>在职</span>":"<span style='color:red'>离职</span>" %>
                        </td>
                        <td>
                            <%# Eval("Remark")%>
                        </td>
                    </tr>
                </ItemTemplate>
               
                <FooterTemplate>
                    <tr id="Tr1" runat="server" visible='<%#bool.Parse((rptDataList.Items.Count==0).ToString())%>'>
                        <td colspan="12" align="center">
                            <asp:Label ID="lblInfo" runat="server" Text="暂无数据"></asp:Label>
                        </td>
                    </tr>
                </FooterTemplate>
            </asp:Repeater>
        </table>

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧