<asp:DataList Runat="server" ID="DataList1" RepeatColumns="4" RepeatDirection="Horizontal">
                                <ItemTemplate>
                                    <td width="25%" align="center" valign="middle"><table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">
                                            <tr>
                                                <td height="30" colspan="2" align="left" valign="middle"><span class="STYLE3">
                                        <a href='yqxx_sort.aspx?infoid=<%#DataBinder.Eval(Container.DataItem,"id").ToString().Trim()%>'>
                                                            <%#obj.mySubstring(DataBinder.Eval(Container.DataItem,"sortname").ToString().Trim(),10)%>..</span></a></td>
                                            </tr>
                                            <tr>
                                                <td height="30" colspan="2">
                                                    <asp:DataList Runat=server RepeatColumns=1 RepeatDirection=Horizontal DataSource='<%#GetDataSource(DataBinder.Eval(Container.DataItem,"id").ToString().Trim())%>' ID="Datalist2">
                                                        <ItemTemplate>
                                                            <a href='yqxx.aspx?infoid=<%#DataBinder.Eval(Container.DataItem,"id").ToString().Trim()%>'>
                                                                <%#DataBinder.Eval(Container.DataItem,"sortname").ToString().Trim()%>
                                                            </a>
                                                        </ItemTemplate>
                                                    </asp:DataList>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td width="200" height="20" align="right" valign="middle">&gt;&gt;<a href='yqxx_sort.aspx?infoid=<%#DataBinder.Eval(Container.DataItem,"id").ToString().Trim()%>'>更多</a></td>
                                                <td width="40" align="right" valign="middle">&nbsp;</td>
                                            </tr>
                                        </table>
                                    </td>
                                </ItemTemplate>
                            </asp:DataList>怎么让ItemTemplate的数据一行白色,一行灰色呀???

解决方案 »

  1.   

    建立<AlternatingItemTemplate></AlternatingItemTemplate>节
      

  2.   

    我试过,用<AlternatingItemTemplate></AlternatingItemTemplate>不管用的!!!
      

  3.   

    我认为在DataList 邦定数据事件之前可以做一些事情.具体代码你可以去查查.如果没记错,可以利用OnItemCreated事件.
      

  4.   

    1.<AlternatingItemStyle BackColor="#E8F4FF"></AlternatingItemStyle>
       <ItemStyle ForeColor="#003399" ItemStyle>2.在databinder事件中用奇数和偶数设置e.Item .BackColor =Color.Snow
      

  5.   

    private void DataList1_ItemDataBound(object sender, 
    System.Web.UI.WebControls.DataListItemEventArgs e)
    {
       DataRowView drv = (DataRowView)(e.Item.DataItem);
       int quantity = int.Parse(drv.Row["Quantity"].ToString());
       if (quantity < 10)
       {
          e.Item.BackColor = Color.Red;
       }
    }
      

  6.   

    未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 87:         {
    行 88:             DataRowView drv = (DataRowView)(e.Item.DataItem);
    行 89:             int quantity = int.Parse(drv.Row["quantity"].ToString());
    行 90:             if(quantity < 10)
    行 91:             {
     
      

  7.   

    用datagrid吧...
    把需要摸板的转成模板列...在数据绑定的事件里添代码.判断是交替项的时候加什么颜色..正常项的时候加什么颜色.
      

  8.   

    首先在后台把数据提出来并绑定到DataList(招待DataBind()方法).
    接着在前台可以这样写代码:
    <asp:DataList id="DataList1" runat="server">
      <ItemTemplate>
    <%#DataBinder.Eval(Container.DataItem,"UserName")%>
      </ItemTemplate>
      <AlternatingItemStyle BackColor=#ffcc33></AlternatingItemStyle>
      <AlternatingItemTemplate>
             <%#DataBinder.Eval(Container.DataItem,"UserName")%>
      </AlternatingItemTemplate>
    </asp:DataList>
    其实就是设置交替列(<AlternatingItemTemplate>)样式了过程.只要将它的背景颜色设置一下就可以了.
    多余的操作是不需要的.
      

  9.   

    while(dr.Read())
    {
    bg="#ffffff";
    if(Convert.ToInt32(dr["id"])%2==0)
    {
    bg="#E2F1FF";
    }
    result.Append("<tr height=26px bgColor="+bg+" onmouseover='this.style.backgroundColor=#ffffe0' onmouseout='this.style.backgroundColor=#ffffff'>");
    result.Append("<td align=left width=120px>"+Convert.ToString(dr["game"]) +"</td>");

    }
      

  10.   

    如果ItemTemplate跟AlternatingItemTemplate一起用,两个东西是不是会重复呀?
      

  11.   

    dr读取一个记录集出来,这个记录集是带id的,如id有1,2,3,4,5
    现在用while来判断,当id=奇数时,bgcolor=白色,
    当id=偶数时,bgcolor=灰色,
    这样读取后把结果绘制成一个表,显示一下就行啦,
    给你一个思路,不知道有没有用!
    我今天也刚好在做这个,呵呵
      

  12.   

    如果ItemTemplate跟AlternatingItemTemplate一起用,两个东西是不是会重复呀?
    ---------------
    不会重复,你一试就知道了.
      

  13.   

    给你一段完整的代码,复制后试试.
    <%@ Page language="c#" Codebehind="datalist.aspx.cs" AutoEventWireup="false" Inherits="example.datalist" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>datalist</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <table cellpadding="1" cellspacing="1" border="0" bgcolor="#000000" width="100%">
    <tr>
    <td bgcolor="#ffffff">
    <asp:DataList id="DataList1" runat="server" Width="100%">
    <ItemStyle Width="50px" Height="30px"></ItemStyle>
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem,"cln1")%>-
    <%# Container.ItemIndex+1 %>
    </ItemTemplate>
    <AlternatingItemTemplate>
    <%# DataBinder.Eval(Container.DataItem,"cln1")%>
    -<%# Container.ItemIndex+1 %>
    </AlternatingItemTemplate>
    <AlternatingItemStyle BackColor="LightGrey"></AlternatingItemStyle>
    </asp:DataList>
    </td>
    </tr>
    </table>
    <asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 304px; POSITION: absolute; TOP: 424px" runat="server">Label</asp:Label></form>
    </body>
    </HTML>
    CS代码:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace example
    {
    /// <summary>
    /// datalist 的摘要说明。
    /// </summary>
    public class datalist : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.WebControls.DataList DataList1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    DataList1.RepeatColumns=4;//设置DataList1要显示的列数
    if(!IsPostBack)
    {
    DataBindForDataList1();
    }
    } private void DataBindForDataList1()
    {
    ArrayList al=new ArrayList(100);
    for(int i=0;i<100;i++)
    {
    al.Add(i);
    } DataTable dt=new DataTable();
    DataColumn cln=new DataColumn("cln1");
    dt.Columns.Add(cln);
    for(int i=0;i<79;i++)
    {
    DataRow row=dt.NewRow();
    dt.Rows.Add(row);
    row[cln]=al[i]; }
    DataList1.DataSource=dt;
    DataList1.DataBind();
    string d="123456789";
    d=d.Substring(d.Length-4);
    Response.Write(d);
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }
      

  14.   

    protected void gvLawRule_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowIndex > -1)
                {
                    e.Row.Cells[1].Text = "<a target='_blank' href='LawRuleBrowse.aspx?LawruleID=" + Tool.UtilTool.ToSafeInt32(gvLawRule.DataKeys[e.Row.RowIndex].Value) + "'>" + e.Row.Cells[1].Text + "</a>";//链接转到别的页上                if (e.Row.RowType == DataControlRowType.DataRow)
                    {
                        if (e.Row.RowType != DataControlRowType.Header)
                        {
                            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#cccccc'");
                            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#ffffff'");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                this.lblMessage.Text = ex.Message;
            }
        }
      

  15.   

    ListItemType.AlternatingItem , ListItemType.Item 交替行的值。
      

  16.   

    有这么困难吗?
    以下是我的,很简单的!<table width="796" height="414" border="0" cellpadding="0" cellspacing="1" bgcolor="#0099ff">
    <tr>
    <td width="790" height="39" bgcolor="#ffffff">&nbsp;
    <asp:Label id="SumLabel" runat="server" Width="544px"></asp:Label>
    <asp:HyperLink id="FirstLink" runat="server">首  页</asp:HyperLink>&nbsp;
    <asp:HyperLink id="PerLink" runat="server">上一页</asp:HyperLink>&nbsp;
    <asp:HyperLink id="NextLink" runat="server">下一页</asp:HyperLink>&nbsp;
    <asp:HyperLink id="LastLink" runat="server">末  页</asp:HyperLink></td>
    </tr>
    <tr>
    <td height="372" valign="top" bgcolor="#ffffff" align="center"><table>
    <asp:DataList id="MsgDgDList" runat="server" DataKeyField="id">
    <HeaderTemplate>
    <!--DWLayoutTable-->
    <tr bgcolor="#0099ff">
    <td width="76" height="27" valign="top">留言时间</td>
    <td width="516" valign="top">留言标题</td>
    <td width="194" valign="top" colspan="2">留言者</td>
    </tr>
    </HeaderTemplate>
    <ItemTemplate>
    <tr>
    <td width="72"><%#DataBinder.Eval(Container.DataItem,"TimeInsert","{0:yyyy-MM-dd}")%></td>
    <td width="513" bgcolor="#FFFFFF"><%#DataBinder.Eval(Container.DataItem,"Title")%></td>
    <td width="116"><%#DataBinder.Eval(Container.DataItem,"MessagerName")%></td>
    </tr>
    </ItemTemplate>
    <AlternatingItemTemplate>
    <tr bgcolor="#d8e7ff">    //这里就是交替的颜色
    <td width="72" bgcolor="#E1EDFF"><%#DataBinder.Eval(Container.DataItem,"TimeInsert","{0:yyyy-MM-dd}")%></td>
    <td width="513" bgcolor="#E1EDFF"><%#DataBinder.Eval(Container.DataItem,"Title")%></td>
    <td width="116" bgcolor="#E1EDFF"><%#DataBinder.Eval(Container.DataItem,"MessagerName")%></td>
    </tr>
    </AlternatingItemTemplate>
    </asp:DataList>
    </table>
    </td>
    </tr>
    </table>
      

  17.   

    设置布局只要把DATALIST 里面的RepeatDirection="Horizontal"(项的布局方向)就变成横向了
      

  18.   

    如果DataList设为显示两列的主,确实达不到那个效果!请高手支招!