在Repeater里面显示1-30号的数据,怎么 以每个星期 来改变行的的背景色
 日期           订单数
1号(星期二)  100
2号(星期三)  200
3号(星期四)  300
4号(星期五)  400
5号(星期六)  500
6号(星期日)      600
7号(星期一)      400
8号(星期二)  100
9号(星期三)  200
10号(星期四)  300
11号(星期五)  400
12号(星期六)  500
13号(星期日)      600
1号到6号为一个星期 那么它们的tr的背景色是一样   7号到13号为一个星期 与上一个星期的背景不同
这个该怎么做呢  

解决方案 »

  1.   

    http://topic.csdn.net/u/20101103/13/994c2868-13cf-404b-af28-707c24ea511e.html
      

  2.   


    个你写个demo:首先这个只是用来产生测试用例数据:using System;
    using System.Collections.Generic;public class TestBindAndEvalType
    {    public string yf { get; set; }    public DateTime dt { get; set; }    public List<TestBindAndEvalType> Select()
        {
            var ret = new List<TestBindAndEvalType>();
            for (var i = 0; i < 100; i++)
            {
                ret.Add(new TestBindAndEvalType
                {
                    yf = "xiao" + i.ToString(),
                    dt = new DateTime(2012, 12, 26).AddHours(-i * 18)
                });
            }
            return ret;
        }
    }
    这里是测试页面:<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">    protected void Page_Load(object sender, EventArgs e)
        {    }    DateTime 上一个时间 = new DateTime(1000, 1, 1);
        string 上一个样式 = "样式2";    protected string GetClass(DateTime dt)
        {
            if (!判断两个时间是不是同一周(上一个时间, dt))
            {
                switch (上一个样式)
                {
                    case "样式2":
                        上一个样式 = "样式1";
                        break;
                    case "样式1":
                        上一个样式 = "样式2";
                        break;
                }
            }
            上一个时间 = dt;
            return 上一个样式;
        }    private bool 判断两个时间是不是同一周(DateTime lt, DateTime dt)
        {
            DateTime d1 = lt.Date.AddDays(-1 * (1 + (int)lt.DayOfWeek));
            DateTime d2 = dt.Date.AddDays(-1 * (1 + (int)dt.DayOfWeek));
            return d1 == d2;
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <table border="1">
            <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
                <HeaderTemplate>
                    <tr>
                        <th>
                            日期
                        </th>
                        <th>
                            yf
                        </th>
                    </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr class='<%# GetClass((DateTime)Eval("dt")) %>'>
                        <td>
                            <%# Eval("dt") %>
                        </td>
                        <td>
                            <%# Eval("yf") %>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    <tr>
                        <td>
                            脚丫子
                        </td>
                    </tr>
                </FooterTemplate>
            </asp:Repeater>
        </table>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Select"
            TypeName="TestBindAndEvalType"></asp:ObjectDataSource>
    </body>
    </html>
      

  3.   

    这里,为tr的class属性绑定了一个表达式,直接调用GetClass函数来获得样式。而这个函数,会自动跟踪“上一个日期”并且比较当前要比较的日期,每当遇到相邻两个日期不是同一星期的情况,就会反转默认的样式输出。