我正在一個程序中,我想在應用程序中顯示數據庫的內容,用戶也必須能夠編輯值,所以我決定datagridview會最佳選擇。C#datagridview不包含行
我已成功做出datagridview(通過拖放到winform上),併成功設置數據源(顯示內容)。
設置在DataGridView的數據源:
db = new DatabaseHandler();
userDB = db.Get("users");
dtgv_users.DataSource = userDB.DefaultView;
dtgv_users.Update();
我還設置了一些事件處理爲編輯的結束和驗證事件:
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();
}
但我遇到了一個問題:當我編輯datagridview中的第一行,然後按Enter鍵我得到以下問題:An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
,如果我通過調試手動檢查datagridview中的行是什麼,我意識到它不包含任何行。
我該如何解決這個問題,爲什麼datagridview不包含任何行?
我希望你們能幫助我!
親切的問候, 喬瓦尼
編輯
問題謊稱與Initialize
從代碼中刪除這個和它的作品,謝謝!
更改下面的'dtgv_users.Update();'到'dtgv_users.Refresh();'你也有''InitializeComponent();''你的'dtgv_users_CellValidating' eventHandler – MethodMan
我剛纔donet ,並且我收到了同樣的錯誤 –
當你使用調試器時,這個方法返回的是什麼?db.Get(「users」);'a'DataTable,DataSet,...'什麼行錯誤.. – MethodMan