DataGridViewに重複しない値を入力するには?


りんご  2009-10-02 19:40:21  No: 142599

VB2008 ExpressでDataGridViewを使用した入力画面を作成しています。
列1=記号
列2=名称  ・・・
といった入力ができるようにしたいのですが、
列1の記号には、重複した値を入れられないようにしたいと考えています。
どのようにすれば実現できるか、ヒントを頂けないでしょうか?
よろしくおねがいします。


しげ  2009-10-03 07:05:48  No: 142600

DataGridViewへ直接入力って事でしょうか?それとも
別の入力用のフォームからデータを入力し決定ボタンなどを押しDataGridViewへ行単位で追加していくのでしょうか?

直接入力だと1文字単位で列1を検索していかないといけないのではないかな。
後者の別ホームからの入力だと決定ボタンを押した後に検索をかけて、有るか無いかの判断をすればいいと思います。

また、これらの入力したデータはアプリケーション終了時には消えるものでしょうか?
データベースファイルなどへ保存もかねて、次回アプリを起動時に読み込む作業も必要なのでは?

そのあたりも含めた質問内容の方が他の人からの回答も得られやすいですよ。


りんご  2009-10-05 19:38:27  No: 142601

しげさん、ご回答ありがとうございます。
入力データは、DataGridViewに直接入力します。
ということは、入力後、(例えばCellValidatingイベントで)同一列に同じ値のものがないかどうかを
ひとつづつ調べるしか方法はないのでしょうか?
(もっとスマートな方法があればいいのですが・・・)
よろしくお願いします。


subaru  2009-10-05 22:26:49  No: 142602

UniqueConstraintを設定したDataTableオブジェクトを
データソースに選択しておくと、重複した値のときに
DataErrorイベントでハンドルできるようになります。


りんご  2009-10-06 01:12:13  No: 142603

subaruさん、ご回答ありがとうございます。
参考にさせていただきます。
さて、DataSourceにUniqueConstraintを設定したDataTableオブジェクトを設定することとしたいのですが、
あらかじめDataGridViewに列などをデザインした状態で、UniqueConstraintを設定したDataTableを
DataGridViewのDataSourceに設定すると、デザインした列と、作成したDataTableの列が
重複してDataGridViewに表示されてしまいます。
DataGridViewでデザインした列上に上記作成したDataTableの内容が表示されるようにするにはどうすればよいでしょうか?
よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加