Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将一组特定的单元格与另一个单元格进行比较后隐藏在Gridview中,以提供嵌套的外观_Asp.net_C# 4.0_Gridview - Fatal编程技术网

Asp.net 将一组特定的单元格与另一个单元格进行比较后隐藏在Gridview中,以提供嵌套的外观

Asp.net 将一组特定的单元格与另一个单元格进行比较后隐藏在Gridview中,以提供嵌套的外观,asp.net,c#-4.0,gridview,Asp.net,C# 4.0,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

我有以下观点

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 = "";
        }

但它不起作用,有人能帮我吗

这里有一个简单的方法:

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

    }
}
我将声明一个
列表
以字符串形式保存不同的日期:

List<string> myList = new List<string>();
编辑2

您可以使用字符串代替
列表
。在类开头的代码中添加以下内容:

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

    }
}

我想如果我采用这种方法,所有的细胞都会被隐藏起来。因为myList的所有日期值都显示在DB中。它只需确保on date将被多次显示。但如果您多次重复同一日期,请尝试我的编辑。是否可以这样做:在第一列中,我以一种方式解析所有值。我将第一条记录存储在列表中。然后,如果我在下面的单元格中发现它重复,我会使其不可见,当我获得新记录时,再次将其存储在列表中。我尝试了你的代码片段,但它不起作用(@Subhamoy-很抱歉听说它对你不起作用。我在发布之前测试了我的代码。我唯一能想到的是,你是否在页面的开头添加了这一行
List myList=new List()
?我正在编辑您建议的答案。您好,我已将我使用的代码发送给您的电子邮件ID。我已使用Northwind示例数据库对其进行了测试。您能检查一下我是否做错了什么吗。