作成者から手動で作成した4つの列を含むdatagridviewを用意しました。 1列目、2列目、3列目はテキストボックス列ですが、最後の列はcomboboxcolumnとしてマークされています。データソース付きのDataGridViewコンボボックスカラム
ユーザーは、ボタンをクリックすると行を追加できます。最初の3つの列の値は、いくつかのテキストボックスから来ています。問題は、ユーザーが自分の行を追加するときに、私はcombobx列に値を設定しなければならないということです。私がこれまでに試したのは、次のようなものでした:
内部でデータ取得可能なデータを取得するGetAll関数は、IdとNameです。 Idは、値メンバーとしてマークされ、表示メンバーとして名前が付けられます。
フォームツリーの最初の列のフィールドがいくつかのテキストボックスからいっぱいになり、最後のコンボボックスの列がGetAllのデータで埋められるようにするだけです。それを達成する方法?
Private Sub btnAddMatType_Click(sender As Object, e As EventArgs) Handles btnAddMatType.Click
try
Dim dt as DataTable
dt = New Variation().GetAll()
Dim cbo = CType(dgvMaterials.Columns(3), DataGridViewComboBoxColumn)
cbo.Items.AddRange(dt.AsEnumerable().Select(Function(s) s.Field(Of String)("Name")).ToArray())
Dim rodzajID as String = TreeMaterials.SelectedValue
Dim rodzajName as string = TreeMaterials.SelectedNode.Text
Dim material as string = TreeMaterials.SelectedNode.Parent.Text
dgvMaterials.Rows.Add(material, rodzajName, rodzajID)
Catch ex As Exception
msgbox(ex.ToString())
End Try
a)Nothingは何ですか(マウスを動かす)?これは 'cbo'または' dt'でなければなりません。 DGVデザインにcboがありますか?あなたは "Wariacja"に名前のプロパティを設定しましたか?いずれかが 'cbo'をnullにするでしょう。 b)** 'Rows.Add'でcboを渡してはいけません。もしあれば、そのプロパティの値を渡してください。私の中で、最初のものが4番目のデータ要素項目を持っていることに注意してください。 – Plutonix
@JimmyJimmこれは 'Dim cbo As DataGridViewComboBoxColumn = Me.Wariacja'をコンパイルしますか? (またはComboBoxColumnの名前が何であれ) – Slai
これを開くには2回のクリックが必要です。最初のクリックは選択されている行/セルです - 行ヘッダーの矢印が表示されますジャンプ - 2番目がcboを開きます – Plutonix