那换个角度呢?如何将DataGrid的表宽设置为1列?也就是说让每行显示1个列项然后换行显示另一个列项

解决方案 »

  1.   

    当你把datagrid 添进 dataset里,在默认的情况下表是横的,也就是上面是一排列名,下面是一排数据。现在我想把这个表纵向排列,也就是要让他在最左边1列显示数据库的表的列名,在右边显示数据。比如
    姓名  年龄  学号
    阿布  23    01
    转换成这样的效果:
    姓名  阿布
    年龄  23
    学号  01
      

  2.   

    给你一个想法,看可不可以实现,这样的我没有做过了,可以通过矩正变换来实现,估计需要写个算法,来实现,好象在DATAGRID中实现起来有点难度,可以考虑在DATAVIEW里实现,不知道我的想法行不行,
      

  3.   

    如果不是非用DATAGRID,用DATALIST可以轻松实现
      

  4.   

    哈,我在网上剽窃到一个转换的方法,不过相当麻烦的说。现在拿出来与大家分享。不过我还是想知道DATALIST如何实现,那个大虾来讲讲阿~谢谢方法:
    分别以DataGrid和HtmlTable来显示转换前和转换后的数据,先读取数据库中的纪录存到一个DataSet中,然后从DataSet中读取数据并创建HtmlTable的行和列。
    代码:
    DataGrid_valign.aspx
    --------------------
    <%@ Page language="c#" Codebehind="DataGrid_valign.aspx.cs" AutoEventWireup="false" Inherits="test.DataGrid_valign" %>
    <HTML>
    <HEAD>
    <title>DataGrid数据视图转换</title>
    </HEAD>
    <body>
    <form id="Form1" runat="server">
    <h1 align="center">把表格数据转换为横向显示</h1>
    原始数据<br>
    <asp:datagrid id="DataGrid1" runat="server" BackColor="LemonChiffon">
    <HeaderStyle BackColor="LightGreen"></HeaderStyle>
    </asp:datagrid><br>转换后的数据<br>
    <asp:table id="Table1" runat="server"></asp:table></form>
    </body>
    </HTML>
    -------------------
    DataGrid_valign.aspx.cs
    -------------------
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    /*
    Filename     : DataGrid_valign.aspx.cs
    Author       : AYEEL
    Description  : 把数据转换为纵向视图  
     */
    namespace test
    {
     public class DataGrid_valign : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.Table Table1;
      protected System.Web.UI.WebControls.DataGrid DataGrid1;
     
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 初始化页面
                SqlConnection Conn = new SqlConnection();
       string connStr = "server=localhost;database=Northwind;user id=n;password=n";
       Conn.ConnectionString = connStr;
       string sqlStr = "select EmployeeID,LastName,FirstName,TitleOfCourtesy from Employees";
       SqlDataAdapter cmd2 = new SqlDataAdapter(sqlStr,Conn);
       DataSet ds = new DataSet();
       cmd2.Fill(ds,"table1");;
       //数据绑定
       DataGrid1.DataSource = ds.Tables["table1"].DefaultView;
       DataGrid1.DataBind();   foreach (DataColumn dc in ds.Tables["table1"].Columns)
       {
        //转换数据视图
        TableRow trow = new TableRow();
        TableCell tcell = new TableCell();
        foreach (DataRow dr in ds.Tables["table1"].Rows)
        {
         //循环添加标题
         tcell.Text = dc.ColumnName;
         trow.BackColor = System.Drawing.Color.LemonChiffon;
         tcell.BackColor = System.Drawing.Color.LightGreen;
         tcell.Controls.Add(new LiteralControl(dc.ColumnName.ToString()));
         trow.Cells.Add(tcell);
        }
        foreach (DataRow dr in ds.Tables["table1"].Rows )
        {
         //循环添加表格数据
         TableCell tcelldata = new TableCell();  //创建新行(数据行)
         tcelldata.Controls.Add(new LiteralControl(dr[dc.ColumnName].ToString()));
         trow.Cells.Add(tcelldata);
        }
        Table1.Rows.Add(trow);  //添加表格行(包括标题和数据的行)
       }
      }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// 
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// 
      private void InitializeComponent()
      {    
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion
     }
    }