Ver Mensaje Individual
  #8 (permalink)  
Antiguo 30/04/2009, 10:39
german_martin
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Rotar GridView

Me tomo el atrevimiento de responder luego de un año este post porque la solucion concreta no la he encontrado en este foro y es bueno que la tengamos

Código:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FlipGridView.aspx.cs" Inherits="XmlPostData" %>

<!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>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
      <div>
          <asp:GridView ID="GridView1" runat="server" ShowHeader="false" AllowSorting="true">
          </asp:GridView>
      </div>
  </form>
</body>
</html>

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.Net;
using System.Text;
using System.IO;

public partial class FlipGridView:System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
   
        GridView1.DataSource = FlipDataSet(c());
        GridView1.DataBind();

    }

    public DataSet c()
    {
        DataSet ds = new DataSet();
        DataTable dt = new DataTable("Company");
        DataRow dr;
        dt.Columns.Add(new DataColumn("accountNo", typeof(Int32)));
        dt.Columns.Add(new DataColumn("CompanyName", typeof(string)));
        dt.Columns.Add(new DataColumn("Address", typeof(string)));
        for (int i = 0; i <= 10; i++)
        {
            dr = dt.NewRow();
            dr[0] = i;
            dr[1] = "Company" + i + Environment.NewLine + "Title" + i;
            dr[2] = "Address" + i + Environment.NewLine + "Title" + i;
            dt.Rows.Add(dr);
        }
        ds.Tables.Add(dt);
        return ds;
    }
    public DataSet FlipDataSet(DataSet my_DataSet)
    {
        DataSet ds = new DataSet();
        foreach (DataTable dt in my_DataSet.Tables)
        {
            DataTable table = new DataTable();
            for (int i = 0; i <= dt.Rows.Count; i++)
            {
                table.Columns.Add(Convert.ToString(i));
            }
            DataRow r = null;
            for (int k = 0; k < dt.Columns.Count; k++)
            {
                r = table.NewRow();
                r[0] = dt.Columns[k].ToString();
                for (int j = 1; j <= dt.Rows.Count; j++)
                    r[j] = dt.Rows[j - 1][k];
                table.Rows.Add(r);
            }
            ds.Tables.Add(table);
        }

        return ds;
    }
}
te lo dejo en Visual Basic tambien


Código:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FlipGridView.aspx.cs" Inherits="XmlPostData" %>

<!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>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
      <div>
          <asp:GridView ID="GridView1" runat="server" ShowHeader="false" AllowSorting="true">
          </asp:GridView>
      </div>
  </form>
</body>
</html>

Imports System
Imports System.Data
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.Net
Imports System.Text
Imports System.IO
Public Class FlipGridView
    Inherits System.Web.UI.Page
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        GridView1.DataSource = FlipDataSet(c)
        GridView1.DataBind
    End Sub
    
    Public Function c() As DataSet
        Dim ds As DataSet = New DataSet
        Dim dt As DataTable = New DataTable("Company")
        Dim dr As DataRow
        dt.Columns.Add(New DataColumn("accountNo", GetType(Int32)))
        dt.Columns.Add(New DataColumn("CompanyName", GetType(System.String)))
        dt.Columns.Add(New DataColumn("Address", GetType(System.String)))
        Dim i As Integer = 0
        Do While (i <= 10)
            dr = dt.NewRow
            dr(0) = i
            dr(1) = ("Company"  _
                        + (i  _
                        + (Environment.NewLine + ("Title" + i))))
            dr(2) = ("Address"  _
                        + (i  _
                        + (Environment.NewLine + ("Title" + i))))
            dt.Rows.Add(dr)
            i = (i + 1)
        Loop
        ds.Tables.Add(dt)
        Return ds
    End Function
    
    Public Function FlipDataSet(ByVal my_DataSet As DataSet) As DataSet
        Dim ds As DataSet = New DataSet
        For Each dt As DataTable In my_DataSet.Tables
            Dim table As DataTable = New DataTable
            Dim i As Integer = 0
            Do While (i <= dt.Rows.Count)
                table.Columns.Add(Convert.ToString(i))
                i = (i + 1)
            Loop
            Dim r As DataRow = Nothing
            Dim k As Integer = 0
            Do While (k < dt.Columns.Count)
                r = table.NewRow
                r(0) = dt.Columns(k).ToString
                Dim j As Integer = 1
                Do While (j <= dt.Rows.Count)
                    r(j) = dt.Rows((j - 1))(k)
                    j = (j + 1)
                Loop
                table.Rows.Add(r)
                k = (k + 1)
            Loop
            ds.Tables.Add(table)
        Next
        Return ds
    End Function
End Class