DataList实现纵向对比显示记录

横向显示记录: id     name      age
                           1       aaa         19
                           2       bbb         20

纵向显示记录:   id         1            2
                        name   aaa        bbb
                           age      19         20
代码如下:
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;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

public partial class DuiBi : System.Web.UI.Page
{
    public SqlConnection conn;
    public SqlCommand cmd;
    public SqlDataReader dr;
    public DataTable dt = new DataTable();
    public string sqlstr = "";
    public Userimage uimage = new Userimage();
    protected void Page_Load(object sender, EventArgs e)
    {
        string id = Request.QueryString["id"];
        string[] b = Regex.Split(id, ",");
        for (int i = 0; i < b.Length; i++)
        {
            if (i > 2 || b[i].Equals(""))
            {
                break;
            }
            else
            {
                conn = new SqlConnection(ConfigurationManager.AppSettings["Str_sql"].ToString());
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                    cmd = new SqlCommand();
                    sqlstr = "select id,name,age from table where id="+b[i].toString();
                    cmd.CommandText = sqlstr;
                    cmd.Connection = conn;
                    dr = cmd.ExecuteReader();
                    try
                    {
                        if (dt.Rows.Count == 0)
                        {
                            for (Int32 j = 0; j < dr.FieldCount; j++)
                            {
                                System.Type Tp = dr.GetName(j).GetType();
                                dt.Columns.Add(new DataColumn(dr.GetName(j).ToString(), Tp));
                            }
                        }
                        while (dr.Read())
                        {
                            DataRow onedr = dt.NewRow();
                            for (Int32 j = 0; j < dr.FieldCount; j++)
                            {
                                onedr[j] = dr[j];
                            }
                            dt.Rows.Add(onedr);

                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.Message);
                    }

                }
            }
        }
        this.datalistview.DataSource = MakeData(dt); //将转换后的datatable帮定到datalist控件上
        this.datalistview.DataBind();
    }

    //将datatable的行和列互换
    private DataTable MakeData(DataTable dt)
    {
        DataTable dn = new DataTable();
        dn.Columns.Add("ColumnName", typeof(string));
        for (int i = 0; i < dt.Rows.Count; i++)
            dn.Columns.Add("Column" + (i + 1).ToString(), typeof(string));
        foreach (DataColumn dc in dt.Columns)
        {
            DataRow dnr = dn.NewRow();
            dnr["ColumnName"] = dc.ColumnName;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dnr[i + 1] = dt.Rows[i][dc].ToString();
            }
            dn.Rows.Add(dnr);
        }
        return dn;
    } 
}

posted @ 2008-11-12 12:32  林台山人  阅读(243)  评论(0编辑  收藏  举报