datagridviewのカレンダー的使用方法

タグの編集
投稿者 hoido  () 投稿日時 2008/7/24 20:36:00
いつもお世話になっております。 
早速ですが、フォーム上にカレンダー風にDataGridViewを31個作成し、それにSQLServerのデータを日付でフィルターをかけて表示させたいと思っております。 
DataGridViewの作成及びデータ表示までは出来たのですが、DataGridView個々にフィルターのかけ方がわかりません。 
 
下記のようにコードを書きFor分で必要回数繰り返すとFor分の最後の日付ですべてフィルターがかかってしまいます。 
GridName(n).DataSource = dt 
Table = GridName(n).DataSource 
View = Table.DefaultView 
View.RowFilter = "据付日 = #" & LabelDate(n).Text & "#" 
 
こういう操作場合どのようにしたらうまく表示出きる様になるのでしょうか? 
ご指導お願いいたします。
投稿者 るしぇ  () 投稿日時 2008/7/24 21:07:00
1つの DataTable をすべての DataGridView から参照し、使い 
まわしているのであれば、参照元の設定を変更すれば全ての 
DataGridView に変更が適用されるのが正常な処理です。 
 
DefaultView は言葉通り既定のビューだからテーブルに対して 
1つしか用意されていませんし。 
 
図で示すなら 
[Visual Basic 中学校 > 初級講座 > 第34回 値型と参照型] 
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm 
 
DataGridView ごとに別の DataSource を用意する必要があります。 
フィルターをかけるわけですし、DataTable から DataView を 
作ったらよいのでは? 
[DataView クラス] 
http://msdn.microsoft.com/ja-jp/library/system.data.dataview(VS.80).aspx
投稿者 hoido  () 投稿日時 2008/7/25 20:07:00
>>1 
るしぇ様回答ありがとうございました。 
正しいかどうかわかりませんが下記のようにコードを変更したら正確に表示させることが出来ました。 
For n As Integer = 0 To 105 
  If Not GridName(n) Is Nothing Then 
     Dim View As New DataView 
     View.Table = dt 
     View.RowFilter = "抽出日 = #" & Date.Parse(LabelDate(n).Text).ToString("d") & "#" 
     GridName(n).DataSource = View 
  End If 
Next 
 
もし不具合点や改善点があるようでしたらご助言お願いいたします。