C# 如何使用C在gridview中将行值显示为列#
我有一个表,我想用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
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