asp:repeater 控件如何动态合并单元格。

解决方案 »

  1.   

    组号   分项     水果名称  单价    企业    总价
    -----------------------------------------------------------
    1     1        梨       5.00     a    8.45
    1     2        苹果     3.45     a    8.45
    -----------------------------------------------------------
    1     1        梨       4.00     b    8.00   
    1     2        苹果     4.00     b    8.00
    ---------------------------------------------------------
    2     1        香蕉     1.5      a     4.5
    2     2        龙眼     3.00     a     4.5     
    -----------------------------------------------------------
    2     1       香蕉     1.2       c     4.2
    2     2       龙眼     3.00      c     4.2想要的结果组号   分项     水果名称  单价    企业    总价
    -----------------------------------------------------------
    1     1         梨       5.00   a      8.45
          2         苹果     3.45           
          -----------------------------------------------
          1         梨       4.00   b      8.00   
          2         苹果     4.00        
    -----------------------------------------------------------
    2     1         香蕉     1.5    a      4.5
          2        龙眼     3.00           
          ------------------------------------------------------
          1         香蕉     1.2    c      4.2
          2         龙眼     3.00注:组号单元格合并根据组号的记录数,企业,总价单元格的合并是根据企业记录数
      

  2.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="tempRepeater.aspx.cs" Inherits="aaaa_tempRepeater" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div style="width:100%">
            <asp:Repeater ID="Repeater1" runat="server">        
            <HeaderTemplate>
            <table width="100%"><tr><td width="10%">组号</td><td width="10%">分项</td><td width="20%">水果名称</td><td width="20%">单价</td><td width="20%">企业</td><td width="20%">总价</td></tr></table>        
            </HeaderTemplate>        
            <AlternatingItemTemplate>        
                <table width="100%"><tr><td width="10%"><asp:Literal ID='litGroup' Text='<%#Eval("Group") %>' runat="server"></asp:Literal></td><td width="10%"><asp:Literal ID='litOption' Text='<%#Eval("Option") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litName' Text='<%#Eval("Name") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litPrice' Text='<%#Eval("Price") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litCompany' Text='<%#Eval("Company") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litSum' Text='<%#Eval("Sum") %>' runat="server"></asp:Literal></td></tr></table>        
            </AlternatingItemTemplate>
            <ItemTemplate>
                <table width="100%"><tr><td width="10%"><asp:Literal ID='litGroup' Text='<%#Eval("Group") %>' runat="server"></asp:Literal></td><td width="10%"><asp:Literal ID='litOption' Text='<%#Eval("Option") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litName' Text='<%#Eval("Name") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litPrice' Text='<%#Eval("Price") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litCompany' Text='<%#Eval("Company") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litSum' Text='<%#Eval("Sum") %>' runat="server"></asp:Literal></td></tr></table>
            </ItemTemplate>        
            </asp:Repeater>
            <br /><br />
            <asp:Repeater ID="rp" runat="server" OnItemDataBound="rp_ItemDataBound" >        
            <HeaderTemplate>
            <table width="100%"><tr><td width="10%">组号</td><td width="10%">分项</td><td width="20%">水果名称</td><td width="20%">单价</td><td width="20%">企业</td><td width="20%">总价</td></tr></table>        
            </HeaderTemplate>
            <AlternatingItemTemplate>
                <table width="100%"><tr><td width="10%"><asp:Literal ID='litGroup' Text='<%#Eval("Group") %>' runat="server"></asp:Literal></td><td width="10%"><asp:Literal ID='litOption' Text='<%#Eval("Option") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litName' Text='<%#Eval("Name") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litPrice' Text='<%#Eval("Price") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litCompany' Text='<%#Eval("Company") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litSum' Text='<%#Eval("Sum") %>' runat="server"></asp:Literal></td></tr></table>        
            </AlternatingItemTemplate>
            <ItemTemplate>
                <table width="100%"><tr><td width="10%"><asp:Literal ID='litGroup' Text='<%#Eval("Group") %>' runat="server"></asp:Literal></td><td width="10%"><asp:Literal ID='litOption' Text='<%#Eval("Option") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litName' Text='<%#Eval("Name") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litPrice' Text='<%#Eval("Price") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litCompany' Text='<%#Eval("Company") %>' runat="server"></asp:Literal></td><td width="20%"><asp:Literal ID='litSum' Text='<%#Eval("Sum") %>' runat="server"></asp:Literal></td></tr></table>
            </ItemTemplate>        
            </asp:Repeater>
        
        </div>
        </form>
    </body>
    </html>
      

  3.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class aaaa_tempRepeater : System.Web.UI.Page
    {
        string group = "", company = "", sum = "";
        protected DataTable getDataTable()
        {     
            System.Data.DataTable dt = new System.Data.DataTable();
            System.Data.DataRow dr;
            dt.Columns.Add(new System.Data.DataColumn("Group", typeof(System.Int32)));
            dt.Columns.Add(new System.Data.DataColumn("Option", typeof(System.Int32)));
            dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
            dt.Columns.Add(new System.Data.DataColumn("Price", typeof(System.Double)));
            dt.Columns.Add(new System.Data.DataColumn("Company", typeof(System.String)));
            dt.Columns.Add(new System.Data.DataColumn("Sum", typeof(System.Double)));
            dr = dt.NewRow();
            dr[0] = 1;
            dr[1] = 1;
            dr[2] = "梨";
            dr[3] = 5.00;
            dr[4] = "a";
            dr[5] = 8.45;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = 1;
            dr[1] = 2;
            dr[2] = "苹果";
            dr[3] = 3.45;
            dr[4] = "a";
            dr[5] = 8.45;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = 1;
            dr[1] = 1;
            dr[2] = "梨";
            dr[3] = 4.00;
            dr[4] = "b";
            dr[5] = 8.00;
            dt.Rows.Add(dr);       
            dr = dt.NewRow();
            dr[0] = 1;
            dr[1] = 2;
            dr[2] = "苹果";
            dr[3] = 4.00;
            dr[4] = "b";
            dr[5] = 8.00;
            dt.Rows.Add(dr);        
            //
            dr = dt.NewRow();
            dr[0] = 2;
            dr[1] = 1;
            dr[2] = "香蕉";
            dr[3] = 1.5;
            dr[4] = "a";
            dr[5] = 4.5;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = 2;
            dr[1] = 2;
            dr[2] = "龙眼";
            dr[3] = 3.00;
            dr[4] = "a";
            dr[5] = 4.5;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = 2;
            dr[1] = 1;
            dr[2] = "香蕉";
            dr[3] = 1.2;
            dr[4] = "c";
            dr[5] = 4.2;
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = 2;
            dr[1] = 2;
            dr[2] = "龙眼";
            dr[3] = 3.00;
            dr[4] = "c";
            dr[5] = 4.2;
            dt.Rows.Add(dr);  
            return dt;
        }    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Repeater1.DataSource = getDataTable();
                Repeater1.DataBind();
                rp.DataSource = getDataTable();
                rp.DataBind();
            }
            //System.Drawing.Image oImage = System.Drawing.Image.FromFile(@"E:\LXD\新建文件夹 (2)\未命名.gif");
        }
        protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                if (e.Item.ItemIndex == 0)
                {
                    group = ((DataRowView)e.Item.DataItem).Row["Group"].ToString();
                    company = ((DataRowView)e.Item.DataItem).Row["Company"].ToString();
                    sum = ((DataRowView)e.Item.DataItem).Row["Sum"].ToString();
                }
                else
                {
                    //Group
                    if(((DataRowView)e.Item.DataItem).Row["Group"].ToString()==group)
                    {
                        Literal litGroup = e.Item.FindControl("litGroup") as Literal;
                        if (litGroup != null)
                        {
                            litGroup.Text = "";
                        }
                    }
                    else
                    {
                        group = ((DataRowView)e.Item.DataItem).Row["Group"].ToString();
                    }
                    //Company
                    if (((DataRowView)e.Item.DataItem).Row["Company"].ToString() == company)
                    {
                        Literal litCompany = e.Item.FindControl("litCompany") as Literal;
                        if (litCompany != null)
                        {
                            litCompany.Text = "";
                        }
                    }
                    else
                    {
                        company = ((DataRowView)e.Item.DataItem).Row["Company"].ToString();
                    }
                    //Sum
                    if (((DataRowView)e.Item.DataItem).Row["Sum"].ToString() == sum)
                    {
                        Literal litSum = e.Item.FindControl("litSum") as Literal;
                        if (litSum != null)
                        {
                            litSum.Text = "";
                        }
                    }
                    else
                    {
                        sum = ((DataRowView)e.Item.DataItem).Row["Sum"].ToString();
                    }             
                }
            }
        }
    }