問題タブ [datagridview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 選択した列の表示
クラスの VB で .NET 3.5 プログラミングを行っています。関連する 3 つのテーブルを含む .mdb データベースと、次のようないくつかのクエリを含むテーブル アダプターがあります。
次に、フォームに DataGridView があります。私がやりたいことは、クエリから返されたデータを取得して DGV に表示することです。ただし、これを行うと、選択した10列ではなく、データベース内の35列すべてが表示されます(ただし、データが含まれているのは10列だけです...したがって、基本的には空の列がたくさんあるテーブルです)。
私の現在の洗練されていない解決策は、クエリを DataTable に返し、テーブルの列を繰り返し処理して、不要なものを削除することです。これは堅牢で効率的ではなく、主キー列を削除するのが好きではありません。
私の TA は、型指定されていないデータバインディングを使用することを提案しました...これは私が取得したデータのみを表示するべきだと彼は言いましたが、私たちのどちらもまだこれを理解できていません。
ありがとう!
アップデート
.aspx/.aspx.vb ページの意味がわかりませんが、これはテーブル アダプターから取得したクエリ コードです
コードで使用する場所は次のとおりです。
propView は、ロード時に選択された DataSource を持たない DataGridView です
vb.net - DataGridView コンボ ボックスと主キー
バインドされていないデータグリッド ビューのコンボ ボックス列で主キーを処理するベスト プラクティスの方法は何ですか?
意味のある値を表示したいが、主キーのみを保存したい (Access コンボボックスのように)。通常のコンボ ボックスでこれを実現するには、単純な文字列ではなく、2 つのプロパティを持つオブジェクトをアイテム コレクションに追加します。次に、コンボ ボックスの選択したインデックス値をそのオブジェクト形式にキャストして戻し、プロパティを取得することで、これを取得します。これは非常にうまく機能しますが、項目コレクションにアクセスできないように見えるため、datagridview コンボを使用してこの手法を複製することはできません。列を作成するときに通常どおりオブジェクトを追加できますが、グリッドから文字列値を取得することしかできないようです。
これが理にかなっていることを願っています...
c# - マルチスレッドアプリケーションで安全にデータを取り込み、DataGridView を Refresh() するにはどうすればよいですか?
私のアプリには、DataGridView オブジェクトと MousePos タイプの List があります。MousePos は、マウスの X、Y 座標 ("Point" 型) とこの位置の現在のカウントを保持するカスタム クラスです。毎秒 1 回イベントを発生させ、マウス位置をチェックし、このリストのマウス位置のカウントを追加および/または更新するスレッド (System.Timers.Timer) があります。
ユーザーがデータを表示できるように、DataGridView を自動的に Refresh() するために 1 秒に 1 回イベントを再び発生させる、同様の実行中のスレッドが必要です (これも System.Timers.Timer が適切な選択だと思います)。画面更新。(TaskManager のように。)
残念ながら、DataGridView.Refresh() メソッドを呼び出すと、VS2005 が実行を停止し、クロススレッドの状況に陥ったことが通知されます。
私が正しく理解していれば、現在3つのスレッドがあります:
- プライマリ UI スレッド
- MousePos リスト スレッド (タイマー)
- DataGridView 更新スレッド (タイマー)
プライマリ スレッドで DataGridView を Refresh() できるかどうかを確認するために、DataGridView.Refresh() を呼び出すボタンをフォームに追加しましたが、これは (奇妙なことに) 何もしませんでした。DataGridView.DataSource = null を設定してリストに戻すと、データグリッドが更新されることを示すトピックを見つけました。実際、これは機能しましたが、ボタンを介してのみ (プライマリ スレッドで処理されます)。
したがって、この質問は 2 つの部分に変わりました。
- DataGridView.DataSource を null に設定してリストに戻すことは、データグリッドを更新するための受け入れ可能な方法ですか? (私には効率が悪いように思えます...)
- マルチスレッド環境でこれを安全に行うにはどうすればよいですか?
これまでに書いたコードは次のとおりです(C#/ .Net 2.0)
c# - 別のスレッドで DataGridViewRow プロパティを変更する
わかりましたので、バックグラウンド スレッドで DataGridView を BindingSource にバインドしていますが、「しばらくお待ちください」というモデル ウィンドウがユーザーを楽しませています。問題ない。
ただし、行の databounditem タイプに基づいて、行の背景色の一部を変更する必要があります。このような:
プログラムでこれを行うことができますが、行の反復中に GUI をロックするのに十分な行です。状況に対処する最善の方法についてのアイデアを探しています。
これは私が今していることです:
c# - DataGridView の単語と数字を画像に置き換える
DataGridView にいくつかのメッセージとその方向を表示するアプリケーションを作成しています。一部の列のコンテンツを写真に置き換えたいと思います。たとえば、着信を表す番号 0 を緑色の矢印 (いくつかの .jpg 画像) に置き換えたいと思います。
これを達成する方法を知っている人はいますか?
ありがとう!
c# - DataGridView 行の描画
DataGridView 行の背景色を赤に設定しようとしています。次の行で試しました:
dgvActiveCalls.Rows[1].DefaultCellStyle.BackColor = Color.Red;
しかし、うまくいきません。次に、更新に問題があるかどうかを確認するために、行ではなく列をペイントしようとしました:
dgvActiveCalls.Columns[1].DefaultCellStyle.BackColor = Color.Red;
そしてそれはうまくいきました。誰かが DataGridView 行を描画する方法を示すことができれば、本当に感謝しています。
ありがとう!
.net - DataGridView の最初の行として「新しい行を挿入」を設定する方法
DataGridView を取得して、「新しい行を挿入」行を最後の行ではなくグリッドの最初の行としてレンダリングしようとしています。どうすればそれを行うことができますか? コントロールでも可能ですか?
c# - DataGridViewImageColumn 内の一意の画像の出現数をカウントする
DataView にバインドされた DataGridView では、列のセルに ImageList の 2 つの画像のいずれかが含まれます (たとえば、緑色の「オンライン」画像または赤色の「オフライン」画像)。各画像の出現回数を合計するにはどうすればよいですか? DataGridView の行を反復するときは?
DataGridViewImageCell の Value プロパティと FormattedValue プロパティは、基になる DataTable のエントリが ImageList から同じ Image を参照して作成された場合でも、異なる参照を返します。
したがって、「オンライン」の 4 回の出現と「オフライン」の 6 回の出現をカウントするのではなく、10 回の異なる画像の出現を取得しています。
c# - WinForms プロジェクトで DataGridView の DataSource として XML を使用するにはどうすればよいですか?
編集可能な DataGridView を WinForms プロジェクトの XML ファイルにリンクするにはどうすればよいですか?
c# - DataGridView システム ContextMenu を無効にする
ユーザーが DataGridViewTextBoxCell を右クリックしたときにシステム コンテキスト メニューを無効にする方法を知っている人はいますか? DataGridView レベルで WndProc をオーバーライドしようとしましたが (Cell レベルでオーバーライドする WndProc がないため)、何も機能していないようです。どんな助けでも大歓迎です。
以下は、通常の TextBox でこれを実現するために使用するものですが、DataGridViewCell についても同じように作業する必要がありますか?