2009-08-14 12 views
0

私はVB.netを使用してWindowsフォームアプリケーションを作成しています。これは基本的にvb.netにアップグレードされたvb 6.0で作られたアプリケーションです。今私はアイデアを持っているが、それが存在するかわからない。データベースから列が削除されたときにデザイナーのテキストボックスを削除します。

私にはデータベース(My_DB)があり、テーブル(item_details)があります。

現在、6つのフィールドを持つitem_detailsテーブルの要素にデータエントリを作成したいと考えています。だから私は6つのテキストボックスと6つのラベルを追加し、ユーザーが一度に1つのレコードを入力させる。

明日私はテーブルitem_detailsからフィールドを追加または削除します。このようなメカニズムが必要なのは、基になるテーブル構造が変更された場合、テキストボックスとラベルの対応する数が自動的に変更されなければならないということです。つまり、列を削除して5列ある場合、フォームには5つのラベルと5つのテキストボックスが必要です。この機能を実現するためのコントロールはありますか?ここでMVCを話していますか?ヘルプに感謝が必要でした。

+1

またコーヒーを作りたいですか? :P –

答えて

1

はい、ダイナミックコントロールの作成でこれを行うことができます。これらのテキストボックスを描画するたびに、データベースをチェックし、それに応じて描画します。 ADO.NETには、テーブルの列数を検査する機能があると確信しています。

これを知っていると、最大の問題はそれらのテキストボックスの配置です。動的コンテンツを配置するための最適なコントロールは、FlowLayoutPanel & TableLayoutPanelです。

Btw、これを行う最もよい方法は、メディエータのパターンを使用し、この全体のロジックをいくつかのカスタムユーザーコントロールなどにカプセル化することです。

+0

情報ありがとうございます。私は仲介者のパターンを調べます。私はコントロールを実装するためのバインディングナビゲーションコントロールを持っているようなコントロールもあると思います。 –

0

個人的に私はこれに反対します。表に列を追加する場合、物理的に照会と書式を調べて調整が必要かどうかを確認する必要があります。また、新しい列を別の位置に置いたり、ルックアップテーブルにアタッチしたりすることもできます。ときどき列を追加するときにフォーム上にある必要があり、時には、ユーザーには見せたくないだけの内部使用用の列を追加することもあります。さらに、指定しない限り、クエリはすべての列を返すべきではありません。本番環境でselect *を使用していないのですか?これは、ネットワークとサーバーのリソースを浪費するため、非常に貧弱な方法です。最後に、このテーブルに列を頻繁に追加すると思われる場合は、今すぐ再設計する必要があります。テーブルの構造は比較的安定している必要があります。

関連する問題