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メソッドをマージすることにしました。トラブルを起こした後、2つの方法がある理由がないと思った。

4

1 に答える 1

0

GridView には、一連の列である Columns という Readonly プロパティがあります。読み取り専用ですが、その要素は読み取り専用ではありません。要素を追加/変更/削除できます。

車輪を再発明するのではなく購入したい場合は、Telerik をお勧めします。

于 2012-11-17T00:07:24.543 に答える