1
我有下面的代码显示在GridView列,行号:GridView控件显示标题,而不是列asp.net C#
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
gvOrdersProcessed.DataSource = FlipDataTable(BindOrdersProcessed());
gvOrdersProcessed.DataBind();
}
public DataTable BindOrdersProcessed()
{
SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["WO_StatusConnectionString"].ToString());
SqlCommand Cmd = new SqlCommand("sp_B2B_GetOrdersProcessed", Conn);
Cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter ada = new SqlDataAdapter(Cmd);
DataTable dt = new DataTable();
ada.Fill(dt);
return dt;
}
public DataTable FlipDataTable(DataTable dt)
{
DataTable table = new DataTable();
//Get all the rows and change into columns
for (int i = 0; i <= dt.Rows.Count; i++)
table.Columns.Add(Convert.ToString(i));
DataRow dr;
//get all the columns and make it as rows
for (int j = 0; j < dt.Columns.Count; j++)
{
dr = table.NewRow();
dr[0] = dt.Columns[j].ToString();
for (int k = 1; k <= dt.Rows.Count; k++)
dr[k] = dt.Rows[k - 1][j];
table.Rows.Add(dr);
}
return table;
}
在我的html :
<div id="GridOrdersProcessed">
<asp:GridView ID="gvOrdersProcessed" runat="server">
</asp:GridView>
</div>
现在运行的时候我上面有一个数字作为标题:
0 1 2 3 4 5 6
DateCreate 02/11/2013 02/19/2013 02/21/2013 02/25/2013 02/26/2013 02/27/2013
OrdersPendingInvoice 0 0 0 0 0 0
OrdersPendingPickUp 1 1 2 1 7 9
这是为什么发生?
另外,我怎么可以添加一个新列的总订单象下面这样:
DateCreate Total 02/11/2013 02/19/2013 02/21/2013 02/25/2013 02/26/2013 02/27/2013
OrdersPendingInvoice 0 0 0 0 0 0 0
OrdersPendingPickUp 21 1 1 2 1 7 9
谢谢蒂姆,我刚刚发现您的方法和我的方法都必须在数据透视表中使用'ShowHeader =“false”',并使用'DataBound'事件将css样式应用于标题。有关如何为总计添加新列的任何想法? – Somebody 2013-02-27 20:37:31
@Somebody:您必须在第二个位置的“Pivot”方法中添加总列。我使用Linq来计算总数。 – 2013-02-27 20:53:21
谢谢!那工作完美:) – Somebody 2013-02-27 20:54:43