質問者
DataGrid内に表示されたCheckBox全てにチェックをつける方法とチェックをつけない方法について

質問
-
またまた初歩的?なご質問なのですが、
DataGrid内に表示したチェックボックス全てにチェックをつける方法とチェックを外す方法を調べています。
下記の通り、DataGridにXMLから取得したデータを表示し、最初の列を「data:DataGridCheckBoxColumn」にしています。
その「data:DataGridCheckBoxColumn」全行に対して、チェックをつけるボタンとつけないボタンにて、
チェックをつける処理とつけない処理をしたいのです。
どなたか、お力をください。
<data:DataGrid x:Name="dataGrid1" AutoGenerateColumns="False">
<data:DataGrid.Columns><data:DataGridCheckBoxColumn x:Name="dataG_HeaderSelect" Header="" Binding="{Binding chk_file_name}" CanUserResize="False" CanUserSort="False" IsReadOnly="False">
</data:DataGridCheckBoxColumn><data:DataGridTextColumn Header="図番" Binding="{Binding file_name}" CanUserResize="False" CanUserSort="True" IsReadOnly="True">
</data:DataGridTextColumn>
</data:DataGrid.Columns>
</data:DataGrid>2009年11月20日 4:24
すべての返信
-
データ型等わからないので簡潔なものになりますが
chk_file_nameというBoolean型のプロパティを持つ
DataItemというクラスのコレクションをItemsSourceに入れていると仮定しましょう。
-サンプル始-
Dim itemlist As ObservableCollection(Of DataItem) = CType(dataGrid1.ItemsSource, ObservableCollection(Of DataItem))
For Each item As DataItem In itemlist
item.chk_file_name = True ' Trueでチェック、Falseで未チェック
Next
-サンプル終-
これだけですよ。2009年11月24日 4:26 -
お世話様です。
すみません。
いただいたサンプルを下記に作成したイベントハンドラにコピーしたのですが、エラーが発生しました。
Private Sub AllSelect(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
Dim itemlist As ObservableCollection(Of DataItem) = CType(dataGrid1.ItemsSource, ObservableCollection(Of DataItem))For Each item As DataItem In itemlist
item.chk_file_name = True ' Trueでチェック、Falseで未チェック
Next
End Sub
<エラー内容>
「ObservableCollection(Of DataItem)」→「型 'ObservableCollection(Of DataItem)' が定義されていません。」
「DataItem」→「型 'DataItem' が定義されていません。」
以上、Silverlight3でVB開発は初心者のため、ご教授をお願い致します。2009年11月24日 4:40 -
データ型等わからないので簡潔なものになりますが
ちゃんと読んで理解して頂けていないようですね。
chk_file_nameというBoolean型のプロパティを持つ
DataItemというクラスのコレクションをItemsSourceに入れていると仮定しましょう。
DataItemというのは私が勝手に書いているだけですので
ビギナーズラックさんのプロジェクトで使用されているクラスに置き換えてください。
ObservableCollection(Of T)はSystem.Collections.ObjectModelという名前空間にありますので
Import文を書いたり名前空間を補うなりすればよいです。
ということまで補完する必要があるあたりSilverlightだけでなく.NET言語での開発経験が無いように思われますので
もしそうならば正直にそう言って頂いたほうが他のみなさんも(さらに)やさしく対応してくださるかもしれませんよ。2009年11月24日 5:49 -
お世話様です。
いただきましたヒントを元に、下記のようにソース修正しました。
Private Sub AllSelect(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
MessageBox.Show("全て選択します。", "全選択", MessageBoxButton.OK)
Dim itemlist As System.Collections.ObjectModel.ObservableCollection(Of myPersonalInfo_FromKeyWord_Tree) = CType(dataGrid1.ItemsSource, System.Collections.ObjectModel.ObservableCollection(Of myPersonalInfo_FromKeyWord_Tree))
For Each item As myPersonalInfo_FromKeyWord_Tree In itemlist
item.blnchk_file_name = True ' Trueでチェック、Falseで未チェック
Next
End Sub
しかし、上記「AllSelect」関数を実行すると、WEB上で下記のエラーが発生し、うまく動きません。上記の部分で。
このエラーは何を意味しているのでしょうか?
<エラー内容>
「型 'System.Collections.Generic.List`1[SilverlightApplication1.myPersonalInfo_FromKeyWord_Tree]' のオブジェクトを型 'System.Collections.ObjectModel.ObservableCollection`1[SilverlightApplication1.myPersonalInfo_FromKeyWord_Tree]' にキャストできません。」
以上、本当に皆様申し訳ございません。ご教授をお願い致します。2009年11月25日 6:55 -
VBの基礎大丈夫ですか?
DataGridのItemsSourceに、ビギナーズラックさんが代入した時の型が何か確認してください。
nk9kさんの示してくれたサンプルコードは、ビギナーズラックさんが何の型を使用しているか
情報を提示しない中で、ObservableCollection(Of XXXX)を使ってるだろうという仮定の上で
書かれたものだと思います。
なので、その部分の型は、ビギナーズラックさんがDataGridにデータを表示している所で
ご自分で指定された型に読み替える必要があります。
人のコードをコピペして継ぎはぎだらけのコードで大丈夫ですか?
エラー処理は適切に入ってますか?
特定の条件下でうまく動かないようなコードになってたりしませんか?
非常に、これまでのスレッドのやり取りを見ていて不安になってきます。
かずき Blog:http://blogs.wankuma.com/kazuki/2009年11月25日 7:18 -
単純に、どのていどVBをご存じなのか気になったのと、このエラーを
潰しても解決するか疑問だったので、このあとも、ビギナーズラックさんと
やりとりが続くと思ったので聞きました
例えば、DataGridのItemsSourseがNothingだと、例外がでて
ビギナーズラックさんの言うWEB上でエラーがでる状態になります。
このケースに対応しないといけないかどうかは、処理の全体をみて
判断しないといけないですが、これが出来るのは現状だと
ビギナーズラックさんだけなので聞きました。
ほかには、コードでTrueやFalseを指定しても、画面上のチェックボックスに
結果が反映されない可能性があります。
これは、ビギナーズラックさんの作ったmyPersonalInfo_FromKeyWord型の
作りによって変わってきます。
反映されない場合には、また対処が必要なのですが、VBの基本的な
構文がわかってるなら
INotifyPrqpertyChangedを実装して、blnchk_file_nameプロパティで
PropertyChangedイベントを発行してください
という返事で大丈夫ですけど、わからないなら参考サイトも併せて
提示しないといけなかったりします。
そのために、聞きました。
あら探しをしてるわけではありません。
不快に感じたのでしたら、申し訳ありません。
もし、私の対応がゆるせないのでしたら、今後私は
ビギナーズラックさんの質問に回答しないので
引き続きここを利用していただければと思います。
かずき Blog:http://blogs.wankuma.com/kazuki/2009年11月25日 10:11 -
はい。その通りです。
わからないことをわかる方に逐一聞いて何が悪いのでしょうか?
確かにみなさん丁寧に教えていただけています。それは大変に感謝しております。
私がどのレベルなのか?最初に自己紹介していなかったこともあり、大変に面倒なやつと思われても仕方ないとも思います。
ただ、あなた(nk9kさん)に、
「今すぐパソコンを窓から投げ捨てて
開発の会社に在籍しているなら辞表を書いて提出することを願っています。」
と言われる筋合いはございません。
ちなみに、あなたは、そういうことを誰でも平気で言われるのでしょうか?言われる方の立場にたったことありますか?
正直、もし今の会社を私がやめて、次の職が開発者でなくても、あたながいるところには誰も行きたくないですね。
こんなこと、ここで書くことではないですし、私もやになってきますので、
この返信で最後にします。
皆様、色々とご協力いただきまして、ありがとうございました。2009年11月26日 3:06 -
> はい。その通りです。
> わからないことをわかる方に逐一聞いて何が悪いのでしょうか?
聞いて悪いとは言ったつもりはないです。
そう感じたのでしたら申し訳ありません。ただ、効率は悪いと思います。
Googleで、質問文に出てる単語で検索かければ答えが出てくるものが多いと思うので
質問前に検索して自分で調べてみる癖をつけると、今後の実力アップにつながって
良いと思います。
ちなみに、この質問なんですが、一応ItemsSourceプロパティにビギナーズラックさんが
データをセットしたときに使っている型にCTypeでキャストしてやれば大丈夫だと思うと
いうような返事をしたつもりなんですが、うまくいきましたでしょうか?
中途半端なまま、投げ出しだと気持ち悪いので、ここだけでもきちんと、しめませんか?
# 言われる側の立場にたつというのは難しいものですね。
# Googleで検索すれば、すぐ出てくる内容のことを聞いてくる&全然解決に至ってないのは
# 対応する側としては凄く疑問だったりします。
かずき Blog:http://blogs.wankuma.com/kazuki/2009年11月26日 10:59