如何在网格视图中单击数据透视表项时获取标题值
本文关键字:获取 标题 透视 数据 网格 视图 单击 | 更新日期: 2023-09-27 18:01:33
这可能有点棘手,所以请耐心等待。
我有这个结果从gridview,数据来自透视表:
DateCreate 02/11/2013 02/19/2013 Total
OrdersPendInvoice 0 1 1
OrdersPendPickUp 1 15 16
这里可选择的项是数字,并且只是大于0的数字。
所以首先我需要这些项目(可选择的)使他们像linkButtons的儿子当我点击其中一个,我可以传递作为参考(这里的另一个棘手的部分)两个头。
举个例子:
如果我点击数字15,这基本上意味着日期02/19/2013有15个OrdersPendPickUp。然后我将转到另一页,参考02/19/2013
和OrdersPendPickUp
,那里显示了这15条记录。我对最后一部分没有问题,只要我有参考资料。
对于Total
的情况,我只需要OrdersPendInvoice
或OrdersPendPickUp
(取决于所选的项目),因为无论日期如何,我都将获得该参考的所有记录。
我这样做了,但它并没有太多,只是改变了大于0的项的颜色:(
protected void gvOrdersProcessed_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.Pager)
{
for (int i = 0; i <= e.Row.Cells.Count - 1; i++)
{
if (TryToParse(e.Row.Cells[i].Text) > 0)
{
e.Row.Cells[i].ForeColor = System.Drawing.Color.Red;
}
}
}
}
private int TryToParse(string value)
{
int number;
bool result = Int32.TryParse(value, out number);
if (result)
return number;
else
return 0;
}
是的,这很棘手。但是,请尝试以下操作:
private List<string> _headers = new List<string>();
protected void gvOrdersProcessed_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Collect the texts from the column headers
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i <= e.Row.Cells.Count - 1; i++)
{
this._headers.Add(e.Row.Cells[i].Text);
}
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 0; i <= e.Row.Cells.Count - 1; i++)
{
if (TryToParse(e.Row.Cells[i].Text) > 0)
{
string rowKey = e.Row.Cells[0].Text;
string column = this._headers[i];
HyperLink link = new HyperLink();
link.Text = e.Row.Cells[i].Text;
link.NavigateUrl="page.aspx?key=" + rowKey + "&column=" +column;
e.Row.Cells[i].Controls.Clear();
e.Row.Cells[i].Controls.Add(link);
}
}
}
}
链接如下:
正常值: ~/page.aspx?key=OrdersPendPickUp&column=02/19/2013
Total: ~/page.aspx?key=OrdersPendPickUp&column=Total