C# 如何使用C在gridview中将行值显示为列#

C# 如何使用C在gridview中将行值显示为列#,c#,sql-server,C#,Sql Server,我有一个表,我想用C#在gridview中将我的表行显示为列名。有人能建议怎么做吗 CREATE TABLE [dbo].[duedate] ( [duedateid] [int] IDENTITY(1,1) NOT NULL, [duedate] [nvarchar](50) NULL ) SET IDENTITY_INSERT [dbo].[duedate] ON INSERT [dbo].[duedate] ([duedateid], [duedate]) VALU

我有一个表,我想用C#在gridview中将我的表行显示为列名。有人能建议怎么做吗

CREATE TABLE [dbo].[duedate]
(
     [duedateid] [int] IDENTITY(1,1) NOT NULL,
     [duedate] [nvarchar](50) NULL
)

SET IDENTITY_INSERT [dbo].[duedate] ON

INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (1, N'Apr')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (2, N'May')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (3, N'Jun')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (4, N'Jul')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (5, N'Aug')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (6, N'Sep')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (7, N'Oct')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (8, N'Nov')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (9, N'Dec')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (10, N'Jan')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (11, N'Feb')
INSERT [dbo].[duedate] ([duedateid], [duedate]) VALUES (12, N'Mar')

SET IDENTITY_INSERT [dbo].[duedate] OFF
我想将此列值显示为列名称,如下所示

Sr.No   Apr   May  Jun  Jul  Aug  Set  Oct  Nov  Dec Jan Fe Mar
我的gridview代码如下

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" 
     CellPadding="4" GridLines="Horizontal">
     <RowStyle BackColor="White" ForeColor="#333333" />
         <Columns>
              <asp:BoundField DataField="duedateid" HeaderText="Fee" />
              <asp:BoundField DataField="duedate" HeaderText="Total" />
         </Columns>
         <FooterStyle BackColor="White" ForeColor="#333333" />
         <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
         <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
         <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
</asp:GridView>
在页面加载时调用函数

 using System;
 using System.Collections;
 using System.Configuration;
 using System.Data;
 using System.Linq;
 using System.Web;
 using System.Web.Security;
 using System.Web.UI;
 using System.Web.UI.HtmlControls;
 using System.Web.UI.WebControls;
 using System.Web.UI.WebControls.WebParts;
 using System.Xml.Linq;
 using System.Data.SqlClient;
 namespace egurkul
 {
  public partial class feeRecipt : System.Web.UI.Page
   {

    protected void Page_Load(object sender, EventArgs e)
    {

        bindgvduedate();
    }
}

此任务似乎与在SQL中使用PIVOT有关。PIVOT子句可以将行转换为列。在您的案例中,您应该知道将使用哪种聚合。我提供了如下解决方案:

SELECT 'max(duedateid)' SrNo, *
FROM
(
    SELECT  d.duedate, d.duedateid
    FROM duedate AS d
) AS s
PIVOT
(
    MAX(duedateid) FOR duedate
    IN(
        [Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec]
    )
) AS pvt

总是表现出你的努力。不要简单地问是否有人想为你写代码。你想在哪里写?SQL或c#?在gridview中使用c#
SELECT 'max(duedateid)' SrNo, *
FROM
(
    SELECT  d.duedate, d.duedateid
    FROM duedate AS d
) AS s
PIVOT
(
    MAX(duedateid) FOR duedate
    IN(
        [Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec]
    )
) AS pvt