• 締切済み

Visualbasic datagridview

Visualbasic2013を利用してシステム開発を行っています。 データベースのマスタ情報(顧客マスタ)をdatagridviewに表示しているのですが、 以下のような項目を表示するとコードと内容で2列必要となってしまい横幅が大きくなってしまい見た目が良くありません。 ・○○区分(0:あり、1:なし) datagridviewを直接編集しデータベースに反映したいと考えているため、 閲覧時には名称を表示し、編集時(フォーカス取得時)にはコード値を表示 するような方法で表示項目数を減らしたいと考えております。 このような実装は可能なのでしょうか。 お分かりの方がいらっしゃいましたらご教授頂けますと幸いです。

みんなの回答

回答No.1

URLの「DataSourceプロパティを使用した例」が参考になるでしょう。 http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html

関連するQ&A

  • visualbasic datagridview

    VisualBasic 2013 を利用してWindows Formアプリケーションを構築しております。 DataGridViewを配置してデータベースよりデータ抽出した結果を表示しております。 表示レコードが複数行存在する場合にはスクロールバーが表示されているのですが、スクロールバーの表示が小さいため以下のような方式で制御できないかと考えております。 ★実現したいこと  ボタン「↑」を配置しボタンクリックで上側へのスクロール制御  ボタン「↓」を配置しボタンクリックで下側へのスクロール制御 大変お手数お掛けいたしますがご存じの方がいらっしゃいましたらご教授のほどよろしくお願いいたします。 以上です。

  • DataGridViewで…

    初めまして、VB2005初心者のココと申します。 今、VB2005を使い開発しているのですが、詰まってしまいました。 初心者の為、くだらない内容かも知れませんが、ご教授よろしくお願いいたします。 セルに入力されたコードを元にDBから名称を抽出し、名称欄(セル)に表示するプログラムを作っています。 コードを入力し、セルからフォーカスが無くなった際に自動的に名称を表示させたいのですが、うまく表示されず、 現在は、別のセルから戻った後、フォーカスが移動されると表示されるような感じになってしまっています。 フォーカスが離れた際に、表示させればいいと思うのですが、どのようにすればいいのかよく分からず困っております。 今は、CellLeaveを使用しています。 Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles DataGridView1.CellLeave 後、名称取得の際はこんな感じにしています。 名称取得(Val(DataGridView1(1, DataGridView1.CurrentCell.RowIndex).Value)) ※1がコードを入力する列になります。 よろしくお願いいたします。

  • VB.netのDataGridViewについて

    VB.netのDataGridViewについての質問です。 DataGridViewで出力された行を選択して、 その行の値をテキストボックスなどに出力させることは可能なのでしょうか? やりたいことは 1.データベースより取得してきたDatatableをDataGridViewに出力 2.出力されたDataGridViewの行を選択する 3.その選択された行の項目(複数)の値を画面上の個々の   テキストボックスなどに反映させる です

  • DataGridViewで入力チェック後、フォーカスをあてたい

    お世話になります。 現在VB2005で開発中なのですが、DataGridViewの処理で躓いております。 DataGridViewには「氏名」「住所」「生年月日」を入力できるようにしており、全ての項目において入力必須としています。 よって、どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。 仮に「氏名」が空白で、次の行の任意セルをクリックした場合、RowValidatedイベントで各セルに対し入力チェックを行い、メッセージを表示させた後にCurrentCellを空白だったCellにし、さらにEditModeで編集可能状態にすればいいと考えていたのですが、結果は最後にクリックした任意セルにフォーカスが移ってしまいます。 入力チェックを発生させるイベントに問題があるのか、カレントセルにフォーカスを当てる処理で問題があるのかで悩んでいる状態です。 どなたか心当たりがあれば教授願いたいです。 よろしくお願いいたします。

  • DataGridViewに関して

    開発環境:Visual Basic2008 Express Ediotion DataGridViewに関して教えて下さい。 DataGridViewに表示されているデータの中で、何行目が選択されているか を取得したいと考えています。 動作手順としては、DataGridViewのデータが選択された状態で、選択ボタンを押した 際に、どのデータが選択されているかを取得したいと考えています。 恐らく可能かと思われますが、何行目だけでなく、行にある項目の全ての値も取得 したいと考えています。 どのように記述したら良いかを教えて下さい。 参考になるようなホームページ、もしくはコードを記述して頂ければ幸いです。 Visual Basic2008初心者なので、初歩的な質問で申し訳ありません。 よろしくお願いします。

  • DataGridView スクロール時の描画速度

    Visualbasic 2013 でWindows Form アプリを開発しております。 DataGridViewにOracleのテーブルより抽出した結果を 10,000レコードを表示する必要があります。 ※DataTableをバインドしてDataGridViewのDataSourceに指定しています。 表示自体は問題なく実装できているのですが、 スクロール時の描画が遅いため実運用では支障がでると考えられます。 スクロール時の描画速度を向上する施策として何か分る方が いらっしゃいましたらご教授頂けますと幸いです。 現時点では以下のような実装としております。 ・DoubleBufferedを有効にしております。 ・1レコードごとにデータ妥当性チェックを行っております。  ※DataTableの全行ループしチェックNGの場合セルの背景色を赤色にしています。

  • VB DataGridView 行削除

    Visualbasic 2010 を利用してWindowsFormアプリケーションを開発しております。 データベースはORACLE11を利用しております。 VB側よりOracleDataAdapterを利用してDatatableにORACLEのSELECT結果を格納しています。 DataGridViewには上記のDataTableをDataSourceとして割り当てております。 このDataGridViewに並び替え機能を組み込んでおります。 ※DataViewのSortを利用して並び替えを実現しております。 この後にDataGridViewの行削除を行うと以下の例外が発生します。 一意制約(XXX.PKY_テストデータ)に反しています Oracle.DataAccess.Client.OracleException これはDataTableをSortしたためOracleDataAdapterと一致しなくなったことが原因ではないかと推測しております。 DataGridViewの並び替えを行っても正常に行削除を行いDataTableにも反映する方法が分る方がいらっしゃいましたらご教授頂けないでしょうか。 VBソース抜粋 ・データ抽出 '/ SQLをOracleで実行した結果をデータアダプタに格納 Dadp5 = New OracleDataAdapter("SELECT * from テストデータ", CONFIG.Database) Dadp5.Fill(dt_test) Me.DataGridView_TEST.DataSource = dt_test ・並び替え(降順) Dim dv = New DataView(dt_test) dv.Sort = "テストコード DESC" dt_test = dv.ToTable Me.H_DataGridView_test.DataSource = dt_test ・行削除 Dim scBuilder As New OracleCommandBuilder(Dadp5) '/ データグリッドビューの編集内容をデータベースへ反映 '/ 生成されたSQLを実行する Dadp5.Update(dt_test) ※ここで例外が発生致します。 お手数おかけ致しますが宜しくお願い致します。 以上です。

  • DataGridView編集中のイベント取得

    VS2008を使用して勉強中の初心者です。 現在、習作しているアプリケーションの中で 以下の動作を実現させたいと思っています。 ・DataGridView編集時、エンターキーを押下した場合  「編集を終了して下のセルを選択する」から  「編集中の文章を改行させる」への変更。 ・DataGridView編集時、シフト+エンターキーを押下した場合  「編集中の文章を改行させる」から  「編集を終了する」への変更。 以上2点なのですが、そもそも編集中のDataGridViewへの 入力に対して、KeyPressイベント等を取得する方法がわからずに 実現できずにいます。 実装する為の方法・もしくは仕組みがわかるサイト等を ご存知の方がいらっしゃいましたら、よろしくお願いいたします。

  • Microsoft Visual C++ 2008 Express E

    Microsoft Visual C++ 2008 Express EditionとMicrosoft SQL Server 2008 を使用してWindowsフォームアプリケーションでプログラミングを行っています。 今完成させたい機能は、データベースの値をDataGridViewに表示する。 その表示画面のDataGridViewに値を書き込み更新ボタンをクリックしたらそれがデータベースに 反映される。 DataGridViewのレコードを削除でき、それもデータベースに反映させることができる。 以上の三つです。 DataSetにデータを読み込ませて、DataGridViewに入れるとか、BindingSourceを使用する必要が あるなどは、どこのサンプルコードにも登場してくるのでなんとなく分かるのですが、完成には至って いません。 Visual C++のサンプルコードがあれば助かるのですが、今はVC#などのサンプルコードを見ながら プログラムを作成しています。 知識があまりないものなので、もしよろしければやさしい解説を宜しくお願い致します。

  • DataGridViewがクラッシュする

    VB2005を使用しています。 DataGridViewコントロールで、以下のようなコードを実行した際に、 DataGridViewコントロール自体が大きな赤い×の表示になることがあります。 (必ず発生するわけではありません。) 'クリア DataGridView1.Columns.Clear() 'DataSetをDataGridViewに格納 DataGridView1.DataSource = dtData '空の列を追加する DataGridView1.Columns.Add("NOP", "") '最終列の幅をFillにする DataGridView1.Columns("NOP").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill '編集不可にする For i = 0 To DataGridView1.Columns.Count - 1 DataGridView1.Columns(i).ReadOnly = True Next i '行幅は変更できないようにする DataGridView1.AllowUserToResizeRows = False '行Headerを非表示にする DataGridView1.RowHeadersVisible = False 'セルの選択方法は行毎にする DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect '1行のみ選択にする DataGridView1.MultiSelect = False '追加行は表示しない DataGridView1.AllowUserToAddRows = False '列幅を自動リサイズさせる DataGridView1.AutoResizeColumns() 'DataGridViewのフォントサイズを変更する DataGridView1.Font = New Font(DataGridView1.Font.Name, 11) '行高さを自動リサイズさせる DataGridView1.AutoResizeRows() 'Headerのアライメントを中央にする DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 同時に、次のメッセージボックスが表示されます。 「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。 [続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。 [終了]をクリックすると、アプリケーションは直ちに終了します。 オブジェクト参照がオブジェクトインスタンスに設定されていません。」 どうすればこのような現象を回避することができるのでしょうか? どうかご教授ください。

専門家に質問してみよう