2011-06-22 1 views
0

私のユーザーは、ほぼExcelを使用していたかのように、スプレッドシートにコピーして貼り付けることができるように、当社の製品データベースに一括アップロード/編集する方法が必要です。これは私が考えることをやめさせるが、私は上司ではないので、それは何かである。私はちょうどDataGridビューにすべてをダンプし、そこでそれを編集させようとしています(ugh)。特定の値(すなわちサイズ)を必要とする多くのことがありますが、XLarge、XLarge、X-Large、xlargeのように入力する必要はありません。だから私はコンボボックスが必要です。簡単ですが、どの列を表示するかを選択できるようにしたいので、単に列の種類を指定できる静的な表ではありません。私は動的に適切な列のコンボボックス列を作成し、データでそれらを埋めることができました。私はそれらのように記入します:DataGridトラップエラーエラー

for (int y = 0; y < table.Rows.Count; y++) 
{ 
    viewMassEdit.Rows.Add(); 
    for (int x = 0; x < table.Columns.Count; x++) 
     viewMassEdit.Rows[y].Cells[x].Value = table.Rows[y][x].ToString(); 
} 

すべてのデータが正しく埋められます。例外なく。ここで問題がで出番これは大きなテーブルを作成し、私は縦または横に、周りにスクロールし始めたときに、これらの未処理のエラーメッセージが定期的にポップアップします:

enter image description here

がらくたそれはについて何を話していますか?私はそれを置くときに値を納得しました、テーブルをナビゲートしているときにどうしましたか?さらに、私はこのエラーを処理するためにどこに行きますか?

答えて

1

まあ、エラーを「扱う」する - イベントDataGridView.DataErrorにハンドラを追加します。

void InitializeComponent() { 
    // ... // 

    this.DataGridView.DataError += this.DataGridView_DataError; 
} 

void DataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e) { 
    e.ThrowException = false; 
} 

あなたはおそらくあなたが防ぐことができるようにDataGridViewDataErrorEventArgs、そしてどのような例外を参照、などであることをデバッグしたいですそれは最初の発砲からです。

+0

返事をありがとう、私は私の最後の文で誤解を招いている可能性があります。どちらかといえばうまくいくように思えますが、エラーを「処理する」だけではありません。私はあなたが言ったようにしたいと発砲からそれを防ぐためにしたい。残念ながら、すべてのDataGridViewDataErrorEventArgsがエラーメッセージのポップアップと同じことを伝えています。 – Nick

+0

@Nick - クイック検索は、ソースに存在しない値をバインドすることによって発生したことを示しているようです。私の推測では、ソースデータにDBNullがあります。これはstring.Emptyに設定されています。エラーがポップアップし、おそらくデフォルトでは「小」または列挙された値の最初のものになります。 –

+0

十分にそれはdbnullのおかげで束だった – Nick

0

エラーをどこで処理するかを知るには、(デバッグ - >例外)で例外処理の例外でデバッグします。ソースを特定するのに役立つはずです。

+0

このようなオプションはありません。私はVS2010を使用しています。私は 'System.ArgumentException'を破るためにボックスをチェックしようとしましたが、助けにはなりませんでした。 – Nick

+0

例外メニューには、ThrownとUser Unhandledの2つの列のチェックボックスが表示されます。デフォルトではスローされ、処理されない場合はスローされます。すべてのCLR例外がスローされたかどうかを確認してください。 – therealmitchconnors

+0

運がありません。私は先に進み、他のすべてのボックスもチェックしましたが、それでもエラーメッセージが表示され、中断しません。 – Nick