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

这是一个简单的方法:

我会声明 aList<string>将不同的日期保存为字符串:

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

现在在我的gridview 的rowdatabound 中,我将检查日期是否存在于列表中。如果是,我将隐藏单元格。否则,我会将日期添加到我的列表中。

编辑 如果您在不同的地方有相同的日期,并且只想隐藏连续重复的日期,您可以尝试这种方法:

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 回答