专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

datalist中依据条件判断颜色交替

发布时间:2011-06-23 14:46:19 文章来源:www.iduyao.cn 采编人员:星星草
datalist中根据条件判断颜色交替
我在datalist中以日期/主题的形式显示列表,其中如果日期相同则隐藏日期,最后的形式是
日期1
主题1(白)
主题2(灰)
主题3(白)

日期2
主题4(白)
主题5(灰)
...

我用了以下一段代码:
Private LastDate As DateTime = DateTime.Now.AddYears(-100)
Protected Sub DataList1_ItemDataBound(sender As Object, e As DataListItemEventArgs)
  If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
  Dim riqi As DateTime = DirectCast(DataBinder.Eval(e.Item.DataItem, "riqi"), DateTime)
  If LastDate = riqi Then
  Dim Panel1 As Panel = TryCast(e.Item.FindControl("Panel1"), Panel)
  Panel1.Visible = False
  End If
  LastDate = riqi
  End If
  End Sub

<asp:DataList ID="DataList1" runat="server" RepeatColumns="1" RepeatDirection="Vertical"
  RepeatLayout="Flow" OnItemDataBound="DataList1_ItemDataBound">
  <ItemTemplate>
  <asp:Panel ID="Panel1" runat="server">
  <%# Eval("riqi")%><br>
  </asp:Panel>
  <%# Eval("zhuti")%><br>
  <br>
  </ItemTemplate>
  </asp:DataList>

可以达到我希望的效果,现在的问题是,怎样设置颜色交替?即从每个日期开始交替颜色,而不是从主题1开始交替颜色,否则主题4的那一行就成了灰色。请各位朋友帮忙看看!谢谢!

------解决方案--------------------
你可以这样
HTML code
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Protected Sub Page_Load(sender As Object, e As EventArgs)
        If Not Page.IsPostBack Then
            Dim ds As New System.Data.DataSet()
            Dim dataTable1 As New System.Data.DataTable("BlogUser")
            Dim dr As System.Data.DataRow
            dataTable1.Columns.Add(New System.Data.DataColumn("UserId", GetType(System.Int32)))
            dataTable1.Columns.Add(New System.Data.DataColumn("UserName", GetType(System.String)))
            dataTable1.Columns.Add(New System.Data.DataColumn("riqi", GetType(System.DateTime)))
            dr = dataTable1.Rows.Add(New [Object]() {1, "【孟子E章】" + 1.ToString(), DateTime.ParseExact("2011-12-12", "yyyy-MM-dd", Nothing)})
            dr = dataTable1.Rows.Add(New [Object]() {2, "【孟子E章】" + 2.ToString(), DateTime.ParseExact("2011-12-12", "yyyy-MM-dd", Nothing)})
            dr = dataTable1.Rows.Add(New [Object]() {3, "【孟子E章】" + 3.ToString(), DateTime.ParseExact("2012-12-11", "yyyy-MM-dd", Nothing)})
            dr = dataTable1.Rows.Add(New [Object]() {4, "【孟子E章】" + 4.ToString(), DateTime.ParseExact("2012-12-11", "yyyy-MM-dd", Nothing)})
            dr = dataTable1.Rows.Add(New [Object]() {5, "【孟子E章】" + 5.ToString(), DateTime.ParseExact("2012-12-11", "yyyy-MM-dd", Nothing)})
            
            DataList1.DataSource = dataTable1
            DataList1.DataBind()
        End If

    End Sub

    Private LastDate As DateTime = DateTime.Now.AddYears(-100)
    Protected Sub DataList1_ItemDataBound(sender As Object, e As DataListItemEventArgs)
        If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
            Dim riqi As DateTime = DirectCast(DataBinder.Eval(e.Item.DataItem, "riqi"), DateTime)
            If LastDate = riqi Then
                Dim Panel1 As Panel = TryCast(e.Item.FindControl("Panel1"), Panel)
                Panel1.Visible = False
            End If
            
            Dim Panel2 As Panel = TryCast(e.Item.FindControl("Panel2"), Panel)
            If e.Item.ItemIndex Mod 2 = 0 Then
                Panel2.ForeColor = Drawing.ColorTranslator.FromHtml("#FFFFFF")
            Else
                Panel2.ForeColor = Drawing.ColorTranslator.FromHtml("#EEEEEE")
            End If
            LastDate = riqi
        End If
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body style="background:pink">
    <form id="form1" runat="server">
    <asp:DataList ID="DataList1" runat="server" RepeatColumns="1" RepeatDirection="Vertical"
        RepeatLayout="Flow" OnItemDataBound="DataList1_ItemDataBound">
        <ItemTemplate>
            <asp:Panel ID="Panel1" runat="server">
            <%# Eval("riqi")%>
            </asp:Panel>
            <asp:Panel ID="Panel2" runat="server"><%# Eval("UserName")%></asp:Panel>
        </ItemTemplate>
    </asp:DataList>
    </form>
</body>
</html
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: