0

我遇到了一些设计问题,而且似乎总是遇到各种相同的问题。虽然我意识到存在设计问题,但我不能说问题是什么,也不能说我该如何纠正它。

我特别遇到的一个问题是在抽象 DAO 访问的代码中。我喜欢这个想法,因为我可以转移到影响最小的基于服务的数据检索(我相信)。并且可以通过现有方法添加和访问更多报告。

此外,由于每个报告都包含自己的一组列,我不知道允许 GridView 加载它们的方法(由于接口为空,我发布的代码无法运行)。

我的目标是能够从列表中选择“报告”,然后根据报告填充网格视图。

        public void LoadReportFor(string reportName)
    {
        GridView1.DataSource = RetrieveReportDataFor(reportName, DateTime.Now);
        GridView1.DataBind();
    }

    private List<IReportRecord> RetrieveReportDataFor(string reportName, DateTime date)
    {
        List<IReportRecord> records;
        switch (reportName)
        {
            case "Timesheet":
                records = reportSDAO.GetTimeSheetReport(date);
                break;

            case "Salary":
                records = reportsDAO.GetSalaryReport(date);
                break;
            default:
                records = new List<IReportRecord>();
        }
        return records;
    }

    public class TimeSheetRecord : IReportRecord
    {
        public string DayOfWeek { get; set; }

        public int EmpID { get; set; }

        public DateTime Start { get; set; }

        public DateTime End { get; set; }

        public double HoursWorked { get; set; }
    }

    public class SalaryRecord : IReportRecord
    {
        public int EmpID { get; set; }

        public double Salary { get; set; }
    }

    public interface IReportRecord
    {
    }
}

更新。

我决定合并 LoadReportFor 和 RetrieveReportDataFor 方法。在给我的麻烦一些想法之后,我没有理由有两种方法。

4

1 回答 1

0

GridView 有一个名为 Columns 的 Readonly 属性,它是一组列。它是只读的,但它的元素不是只读的,您可以从中添加/修改/删除元素。

如果您想购买轮子而不是重新发明它,我可以推荐 Telerik。

于 2012-11-17T00:07:24.543 回答