2

次のGridViewがあります

Day         Duty Office      Duty Officer

27/10/2013  Press                A
27/10/2013  Head Q               B
27/10/2013  Help Desk            D
28/10/2013  Press                A1
28/10/2013  Head Q               A2
28/10/2013  Medical              A3
28/10/2013  Help Desk            A4
29/10/2013  Press                B1
29/10/2013  Head Q               B2
29/10/2013  Medical              B3
29/10/2013  Help Desk            B4 

後続の日付が Day 列で同じである場合、後続の日付を非表示にする必要があります。正確には、以下の方法で列を表示する必要があります。

Day         Duty Office      Duty Officer

27/10/2013  Press                A
            Head Q               B
            Help Desk            D
28/10/2013  Press                A1
            Head Q               A2
            Medical              A3
            Help Desk            A4
29/10/2013  Press                B1
            Head Q               B2
            Medical              B3
            Help Desk            B4

私はこのようなもので試してみたかった

 if (GridView1.Columns[0].Cells[i].Value.Equals(GridView1.Columns[0].Cells[i + 1].Value))
        {

            GridView1.Columns[0].Cells[i + 1].Value = "";
        }

しかし、それは機能していません。誰か助けてください。

4

1 に答える 1

2

簡単なアプローチは次のとおりです。

List<string>個別の日付を文字列として保持する a を宣言します。

List<string> myList = new List<string>();

グリッドビューの行データバインドで、日付がリストに存在するかどうかを確認します。そうであれば、セルを非表示にします。それ以外の場合は、日付をリストに追加します。

EDIT 異なる場所に同じ日付があり、連続して繰り返される日付のみを非表示にしたい場合は、次のアプローチを試すことができます。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string myValue = e.Row.Cells[0].Text;
        if (myList.Contains(myValue))
        {
            e.Row.Cells[0].Visible = false;
        }
        else
        {
            myList.Clear();//Make sure only following repeat will be effected
            myList.Add(myValue);
        }

    }
}

編集 2

の代わりに文字列を使用できますList<string>。クラスの最初のコードに次を追加します。

string myString = string.Empty;

そして、RowDataBound で:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string myValue = e.Row.Cells[0].Text;
        if (myString == myValue)
        {
            e.Row.Cells[0].Visible = false;
        }
        else
        {                
            myString = myValue;
        }

    }
}
于 2013-10-27T16:00:19.633 に答える