0

我遇到了一个问题,如果值属于同一类别,则数据网格视图列不显示超过 1 个值。

示例:2 个人在同一个地方工作。第一人轮班时间为:10:00 - 1700。第二人轮班时间为:1500:2100。

我实现了代码以在计划数据网格视图中显示 2 个人的轮班时间。问题从这里开始。这 2 名工人在 15:00 - 17:00 之间有重叠的时间班次。15:00 - 17:00 之间的数据网格视图中显示的值只是第一个人的名字。我需要在 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;
                            }
                        }
                    }
                }
            }
        }

那里的任何人都对如何实现它有任何想法,以便它可以显示两个名称而不是只显示一个名称?谢谢!帮助将不胜感激。:)

4

1 回答 1

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

看看这是否符合您的预期。

于 2012-08-21T09:18:13.347 回答