我遇到了一个问题,即如果值属于同一类别,则数据网格视图列不会显示多于1个值。
示例:2个人在同一个地方工作。第一个换挡时间是:10:00-1700。第二个换挡时间是:1500:2100。
我实现代码以在Schedule数据网格视图中显示2个人的班次时间。问题从这里开始。这2名工人在15:00至17:00之间重叠时间。 15:00 - 17:00之间数据网格视图中显示的值仅为First guy的名称。我需要在时间段15:00-17:00显示员工姓名。
这是将数据显示到数据网格视图中的代码。
foreach (allocation a in query)
{
for (int i = 0; i < scheduleDGV.Rows.Count - 1; i++)
{
for (int j = 0; j < scheduleDGV.Columns.Count; j++)
{
if (cbLocation.SelectedItem.Equals(a.LocationName) && cbScheduleDate.SelectedItem.Equals(a.AllocationDate))
{
if (a.LocationName.Equals(scheduleDGV["Location", i].Value.ToString()) &&
a.StationName.Equals(scheduleDGV["Station", i].Value.ToString()))
{
if (scheduleDGV.Columns[j].HeaderText.Equals(a.AllocationTime.ToString()))
{
scheduleDGV[j, i].Value = a.EmployeeName;
}
}
}
}
}
}
那里的任何人都有任何关于如何实现它的想法,以便它可以显示两个名称而不是一个名称?谢谢!将非常感谢帮助。 :)
答案 0 :(得分:0)
您的问题可能来自
行scheduleDGV[j, i].Value = a.EmployeeName;
您只是将相关的员工姓名放在单元格中,而不是检查那里是否已有名称。
如果不重构其余代码,可以将此行替换为:
var existingName = scheduleDGV[j, i].Value as string;
if (!String.IsNullOrempty(existingName))
{
scheduleDGV[j, i].Value =
existingName +
Environment.NewLine +
a.EmployeeName;
}
else
{
scheduleDGV[j, i].Value = a.EmployeeName;
}
并查看是否符合您的预期。