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示例数据库对其进行了测试。您能检查一下我是否做错了什么吗。