2016-03-22 12 views
-1

私はアプリケーションのデータベースの内容を表示したいプログラムで作業しています。ユーザーは値を編集できる必要がありますので、データグリッドビューは最善の選択。C#datagridviewに行が含まれていません

私はdatagridviewを(winformにドラッグアンドドロップして)正常に作成し、データソースを正しく設定しました(コンテンツが表示されています)。

private void dtgv_users_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    string id = userDB.Rows[e.RowIndex]["id"] + ""; 
    string column = userDB.Columns[e.ColumnIndex].ColumnName; 
    var rows = dtgv_users.Rows; 
    string data = dtgv_users.Rows[e.RowIndex].Cells[e.ColumnIndex].Value + "" 
    db.Update("users", String.Format("{0}='{1}' WHERE id={2}", column, data, id)); 
} 

private void dtgv_users_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
{ 
    if (e.ColumnIndex == 0) 
     dtgv_users.CancelEdit(); 
} 

:私も編集の終了と検証イベントのためにいくつかのEventHandlerを設定している

db = new DatabaseHandler(); 

userDB = db.Get("users"); 
dtgv_users.DataSource = userDB.DefaultView; 
dtgv_users.Update(); 


のDataGridViewのデータソースを設定します

しかし、私は問題が発生しました:私はdatagridviewの最初の行を編集し、Enterキーを押すと、次の問題が発生します:An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll、私は手動で行がdatagridviewで何をチェックしている場合、行。


この問題を解決するにはどうすればよいですか。なぜdatagridviewに行が含まれていませんか?

私はあなたが私を助けてくれることを願っています!

種類よろしく、 ジョヴァンニ


編集

問題は、コードからこれを削除Initializeと嘘をつき、それが動作します、ありがとう!

+0

変更以下の 'dtgv_users.Update();' 'dtgv_users.Refresh()へ;'また、あなたが 'のInitializeComponentを(持っている理由はそこにある);' 'あなたのdtgv_users_CellValidating'なeventHandler – MethodMan

+0

に私は彼の今DONETています私は同じエラーを受け取りました –

+0

このメソッドは 'db.Get(" users ");' 'DataTable、DataSet、...'を返します。デバッガを使用すると、どの行がエラーになりますか... – MethodMan

答えて

1

私はここにブレークポイントを追加します:dtgv_users.DataSource = userDB.DefaultView;とあなたのuserDB.DefaultViewに値があることを確認してください。

また、私はそれがテーブルであると仮定していますが、テーブルに直接バインドしていない場合は、変更を保存してから保存してください。

+0

それに1行があります –

+0

も値を持っています。設定された後にdatagridviewの内容をチェックした後、データソースが設定された後に行が内部にありますが、変更を加えると行が失われます –

+0

既にしかし、そこにも到達していない。 –

関連する問題