2011-07-15 3 views
0

私にはわからない問題があります。DataGridViewComboboxCell.ValueのFormatException

私はDataGridViewComboboxCell、オプション「Klantのaanvraagは、」ユーザが別の顧客を選択することができ、ウィンドウを取得し、選択された

List<ComboBoxItem> klanten = new List<ComboBoxItem>(); 
foreach (ICustomer customer in CustomerFactory.CreateCustomers()) 
{ 
    klanten.Add(new ComboBoxItem(customer.Naam, customer.Id)); 
} 
klanten.Add(new ComboBoxItem("Klant aanvraag", -1)); 

uxInvoerenKlant.DataSource = klanten; 
uxInvoerenKlant.DisplayMember = "Text"; 
uxInvoerenKlant.ValueMember = "Value"; 

を持っています。 これは、ユーザーがその顧客の特定のプロジェクトに割り当てられていないためです。 ユーザーが1つを選択すると、次のコードでComboboxで変更されます。

uxUrenInvoeren[collumnIndex, row.Index].Value = uxInvoerenKlant.Items[klantIndex]; 

klantindexそれはコンボボックスから取得されるので、選択する必要のある顧客です。私の意見では、それは正しい種類のオブジェクトです。

この後、datagridview_dataerrorイベントが発生し、次の例外テキストを含むFormat例外が発生します。

DataGridViewComboBoxCellの値が無効です。

何が問題ですか?

答えて

0

私はそれがあなたの価値-1かもしれないと思います。多分最初から始める必要があります0

+0

あなたは、ほぼ正しかった、uxUrenInvoeren [collumnIndex、row.Index] .Valueの-1であったが、これは問題ではありませんでした。私はそれが答えとして解決される方法を投稿しました –

0

コンボボックスのアイテムコレクションに選択した値を追加する必要があります。ComboBoxColumnItemコレクションに割り当てられた値が見つからず、有効な値ではないため例外が発生します。 Add

(dataGridView1.Columns[0] as DataGridViewComboBoxColumn).Items.Add 
+0

uxInvoerenKlantは、あなたの代わりにあなたが私の知っている限りdataGridView1.Columns [0] の名前です: (DataGridView1.Columns [0]としてDataGridViewComboBoxColumn)。 私はtextとvalueが必要なので、customerNameとcustomerIdのためにcomboboxItemが必要です –

+0

uxInvoerenKlantは0を置き換え、Add(new ComboBoxItem ...)とすることができます。値はTextと値は、これらがComboBoxItemのプロパティであることを願っています – V4Vendetta

1

を使用して、それを追加すること

てみてください、私はこの問題を自分自身を発見しました。

uxUrenInvoeren[collumnIndex, row.Index].Valueには、ComboBoxItem自体の値ではなくComboBoxItemの値が含まれていました。コードは次のようになります。

ComboBoxItem item = uxInvoerenKlant.Items[klantIndex] as ComboBoxItem; 
if (item != null) 
{ 
    uxUrenInvoeren[collumnIndex, row.Index].Value = item.Value; 
} 

このようにしてもうまくいきます。

ありがとうございました!

0

ソリューション:

Private Sub gvPrint_DataError(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles gvPrint.DataError 
    If e.Context = DataGridViewDataErrorContexts.Formatting Or e.Context = DataGridViewDataErrorContexts.PreferredSize Then 
     e.ThrowException = False 
    End If 
End Sub 
+0

質問はC#を使用して、答えにC#を使用してください。 –

関連する問題