0

<List>DateTimeGetDataRangeという名前のクラスを作成して、ユーザーが2つの特定の日の間の日を取得できるようにしました。

次に、データグリッドビューの列に日数を表示します。foreachループを使用しています。このループは問題を引き起こします。問題は、他のカレンダーにすべての日を表示したいので、列にすべての日が表示されないことです。コードを参照してください:

for (int i = 0; i < dtEnd.Subtract(dtStart).Days; i++)
        {
            TimeSpan counter = new TimeSpan(i, 0, 0, 0);

            string s1 = "10/9/2012";
            string s2 = "11/10/2012";
            d1 = Convert.ToDateTime(s1);
            d2 = Convert.ToDateTime(s2);

            foreach (DateTime item in GetDateRange(d1, d2))
            {
                s = item.ToShortDateString();
            }


            PersianCalendar p = new PersianCalendar();
            DateTime date = Convert.ToDateTime(s);
            int day = p.GetDayOfMonth(date);
            int month = p.GetMonth(date);
            int year = p.GetYear(date);
            string dt = string.Format("{0}/{1}/{2}", year, month, day);
            dataGridView1.Columns.Add(string.Format("col{0}", i), string.Format("{0} {1}", (dtStart + counter).DayOfWeek.ToString(), dt));


        }

そのforeachループのため、1日だけ表示されます。DayOfWeekは完全に機能していますが、問題はforeachループの日数が1日しか表示されないことです。

アップデート

文字列dtは、1日だけ表示され、他の日は表示されません。

4

1 に答える 1

0

あなたはそれをすることはできません。ループ内で毎回値をオーバーライドしているためです。新しい行に日付を表​​示できますか。

これを試して :

for (int i = 0; i < dtEnd.Subtract(dtStart).Days; i++)
        {
            TimeSpan counter = new TimeSpan(i, 0, 0, 0);                                       
           dataGridView1.Columns.Add(string.Format("col{0}", i), string.Format("{0}", (dtStart + counter).DayOfWeek.ToString()));
        }

次に、そのための新しい行を追加します。

 d1 = dtStart;
        d2 = dtEnd;
        foreach (DateTime item in GetDateRange(d1, d2))
        {
            int day = p.GetDayOfMonth(item);
            int month = p.GetMonth(item);
            int year = p.GetYear(item);
            string dt1 = string.Format("{0}/{1}/{2}", year, month, day);
            listBox1.Items.Add(dt1);

        }
        dataGridView1.Rows.Add();
        for (int i = 0; i < dataGridView1.Columns.Count; i++)
        {
            try
            {
                dataGridView1.Rows[0].Cells[i].Value = listBox1.Items[i];
            }
            catch (Exception)
            {

            }

        }
于 2012-11-16T09:16:00.373 に答える