トップ回答者
MonthCalendarの値と、dbのテーブルの値とを関連付けさせたい

質問
回答
-
URLにある説明どおりだと、日付カラムのコントロールはDateTimePickerになると
思います、まずこれをMonthCalenderコントロールに変えます。データソースウィンドウにある、日付のカラムの右のほうにある
ドロップダウンを展開し「DateTimePicker」が選択されていると重いますが、
ここで「カスタマイズ」を選択します。
リストの中にある「MonthCalender」にチェックを入れてOKを押します。
もう一度データソースウィンドウにある、日付のカラムの右のほうにある
ドロップダウンを展開すると、「MonthCalender」が増えているので、これを選択。
あとは、すでに配置済みの日付カラムの詳細コントロールである「DateTimePicker」
と、そのラベルを削除し、データソースウィンドウの日付カラムの項目を再び
ドラッグ&ドロップでフォームへもっていけば、「MonthCalender」として配置
されます。これだけだと、まだお望みの動作にはなりませんので、次にデータグリッドと
カレンダーコントロールに、以下の各イベントを追加します。
以下は前提条件として、データグリッドのカラム[2]番目に対象の日付カラムがあるとし、
データソースウィンドウのドラッグドロップで生成されたコントロール名を
データグリッドをDataGridView1とし、カレンダーをMonthCalendar1とします。
書き方は色々あるかと思いますが、一例としてみてください。// MonthCalenderのDateSelectedイベント { DataGridView1.CurrentRow.Cells[2].Value = MonthCalendar1.SelectionStart; } // DataGridViewのCellValueChangedイベント { if (DataGridView1.IsHandleCreated) { if (e.ColumnIndex == 2) { MonthCalendar1.SelectionStart = (DateTime)DataGridView1.CurrentRow.Cells[2].Value; } } }
- 回答としてマーク taokato 2011年3月29日 1:25
すべての返信
-
カレンダーの日付をクリックすると、テーブルのレコードを表示する。
MonthCalendarのDateSelectedイベントが発生しますので、そのイベントハンドラでテーブルのレコードを表示するようにします。
テーブルのレコードを選択すると、カレンダーの日付はテーブルの日付にジャンプする。
レコードを選択した後に、MonthCalendarのSelectionStartプロパティとSelectionEndプロパティを使って、MonthCalendarの日付をセットします。
大筋は以上のようなことだと想像しますが、間違っていたら忌憚なくご指摘ください。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
すいません、私の聞き方が悪かったです。
タイトルには、「MonthCalendarの値と、dbのテーブルの値とを関連付けさせたい」
とありますので、イメージ的には、例えばSQLServer等のDBMSの、特定のテーブルの
値と、C#.NETで作成したフォームアプリケーションのMonthCalenderコントロールの
選択値とを、双方向で連動させたい、というように解釈してますがあってますか?その上で、
>カレンダーの日付をクリックすると、テーブルのレコードを表示する。
>テーブルのレコードを選択すると、カレンダーの日付はテーブルの日付にジャンプする。「テーブルのレコードを表示」「テーブルのレコードを選択」とありますが、
「テーブルのレコード」といえば、DBMSの行データの事かと思うのですが、それを表示や
選択するということは、そのデータをどういう方法かによって可視化してるはずです。
例えばフォーム上のDataGridViewにデータをバインドしてるとか。
そこら辺がちょっとわからなかったので質問してました。
それで「表示」ではなく「更新」なのかな?と思った次第です。
「テーブルのレコード」がDBMSのデータの事ではない場合は、DataTableオブジェクト関連?
それとも何かのDBツール上でのGUIの話?
どういう環境でどういうことをやりたいのか、全体像が上手く理解できていません。 -
説明不足だったようで、済みません。
>タイトルには、「MonthCalendarの値と、dbのテーブルの値とを関連付けさせたい」
>とありますので、イメージ的には、例えばSQLServer等のDBMSの、特定のテーブルの
>値と、C#.NETで作成したフォームアプリケーションのMonthCalenderコントロールの
>選択値とを、双方向で連動させたい、というように解釈してますがあってますか?合ってます。
可視化の方法については、この記事に従っています。
http://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_01.html
>それで「表示」ではなく「更新」なのかな?と思った次第です。
クエリを、使っていませんので「更新」になるのではないでしょうか。全体像としては、上記のURLに「誕生日」がありますので、カレンダーと連動させたいと思います。
「顧客マスター・メンテナンス画面」で山田太郎を指し示していますよね。
この時、カレンダーのカーソルも、1960/01/01を指し示して欲しい。
逆に、C#のコードから「誕生日」欄を更新したいと思います。
-
URLにある説明どおりだと、日付カラムのコントロールはDateTimePickerになると
思います、まずこれをMonthCalenderコントロールに変えます。データソースウィンドウにある、日付のカラムの右のほうにある
ドロップダウンを展開し「DateTimePicker」が選択されていると重いますが、
ここで「カスタマイズ」を選択します。
リストの中にある「MonthCalender」にチェックを入れてOKを押します。
もう一度データソースウィンドウにある、日付のカラムの右のほうにある
ドロップダウンを展開すると、「MonthCalender」が増えているので、これを選択。
あとは、すでに配置済みの日付カラムの詳細コントロールである「DateTimePicker」
と、そのラベルを削除し、データソースウィンドウの日付カラムの項目を再び
ドラッグ&ドロップでフォームへもっていけば、「MonthCalender」として配置
されます。これだけだと、まだお望みの動作にはなりませんので、次にデータグリッドと
カレンダーコントロールに、以下の各イベントを追加します。
以下は前提条件として、データグリッドのカラム[2]番目に対象の日付カラムがあるとし、
データソースウィンドウのドラッグドロップで生成されたコントロール名を
データグリッドをDataGridView1とし、カレンダーをMonthCalendar1とします。
書き方は色々あるかと思いますが、一例としてみてください。// MonthCalenderのDateSelectedイベント { DataGridView1.CurrentRow.Cells[2].Value = MonthCalendar1.SelectionStart; } // DataGridViewのCellValueChangedイベント { if (DataGridView1.IsHandleCreated) { if (e.ColumnIndex == 2) { MonthCalendar1.SelectionStart = (DateTime)DataGridView1.CurrentRow.Cells[2].Value; } } }
- 回答としてマーク taokato 2011年3月29日 1:25