1

これは少し注意が必要かもしれませんので、ご容赦ください。

グリッドビューからこの結果が得られました。データはピボットテーブルから取得されました。

DateCreate        02/11/2013 02/19/2013  Total 
OrdersPendInvoice 0          1           1 
OrdersPendPickUp  1          15          16

ここで選択できる項目は数字であり、ゼロより大きい数字だけです。

したがって、最初にそれらのアイテム(選択可能なアイテム)が必要です。それらの1つをクリックすると、linkBut​​tonsのようになり、両方のヘッダーを参照(ここでは他のトリッキーな部分)として渡すことができます。

例を挙げましょう:

15番をクリックすると、基本的に2013年2月19日の日付に15個のOrdersPendPickUpがあることを意味します。次に、参照を含む別のページに移動し、02/19/2013それらOrdersPendPickUpの15のレコードを表示します。参考文献さえあれば、最後の部分は問題ありません。

そして、このTotal場合、OrdersPendInvoiceまたはOrdersPendPickUp(選択したアイテムに応じて)のいずれかが必要です。日付に関係なく、その参照のすべてのレコードを取得します。

私はこれを行いましたが、実際にはそれほど多くはありません。ゼロより大きいアイテムの色を変更するだけです:(

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;
}
4

1 に答える 1

2

はい、注意が必要です。ただし、次のことを試してください。

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
合計: ~/page.aspx?key=OrdersPendPickUp&column=Total

于 2013-02-28T00:11:41.753 に答える