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;
}
}