日期:2014-05-18  浏览次数:20386 次

通过查询,将查询结果各字段以列的形式显示,在线等
我的目的:通过查询一个数据库,把符合条件的数据全部显示,但是要以列的形式显示,比如显示的数据有三个字段,第一列中1.2.3行显示一条数据,第一列4.5.6行显示第二条数据,第一列7.8.9行显示第三条数据,第二列1.2.3行显示第四条数据,第二列4.5.6行显示第五条数据,第二列7.8.9行显示第六条数据,依次类推 ,如何实现 ,如下图显示格式
 
----|----|----|
 a1 | c1 | e1 |
----|----|----|
 a2 | c2 | e2 |
----|----|----|
 a3 | c3 | e3 |
---------------
 b1 | d1 | f1 |
----|----|----|
 b2 | d2 | f2 |
----|----|----|
 b3 | d3 | f3 |



------解决方案--------------------
刚试了一下。前提是列数,行数都必须是3的倍数。

界面中二个DataGridView控件和一个按扭。先把原表读进dt后,绑定到DataGridView1,点击按扭时,把转换后的数据绑定到DataGridView2
namespace Sexy
{
public partial class Form1 : Form
{
private DataTable fDt;
private DataTable dt;
public Form1()
{
InitializeComponent();

fDt = new DataTable(); //目标表
fDt.Columns.Add("Col0", typeof(string));
fDt.Columns.Add("Col1", typeof(string));
fDt.Columns.Add("Col2", typeof(string));
}

private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();

using(SqlConnection conn = new SqlConnection("server=(local);database=TEST;uid=sa;pwd=;"))
{
SqlCommand cmd = new SqlCommand("select * from Sexy", conn);
conn.Open();
dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
}
dataGridView1.DataSource = dt;
}

private void button1_Click(object sender, EventArgs e)
{
DataRow row = null;
for(int i = 0; i < dt.Columns.Count; i++)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
if ((j % 3) == 0)
row = fDt.NewRow();
row[j % 3] = dt.Rows[j][i];
if (j % 3 == 2)
fDt.Rows.Add(row);
}
}
dataGridView2.DataSource = fDt;
}
}
}