datagridviewをデータテーブルにバインドしました。列は自動生成されず、コードで作成されます。ユーザーの行を追加および削除できるようにするため、AllowUserToAddRows = true、AllowUserToDeleteRows = trueがあります。datagridviewで行を削除できない
問題は、行を選択してDelキーを押すと、情報が行セルのデフォルト値に置き換えられます。行は消えない。
この現象は何ですか(なぜ/何が起こっているのですか)、どうすれば回避できますか?
private void resetDowntimeGrid()
{
downtimeEntries = new DataTable();
downtimeEntries.Columns.Add("Category", typeof(int));
downtimeEntries.Columns.Add("HoursDown");
downtimeEntries.Columns.Add("Reason");
//deptDowntimeCategories.Select("", "ListOrder ASC");
gridDowntime.Columns.Clear();
DataGridViewComboBoxColumn cboCategory = new DataGridViewComboBoxColumn();
{
cboCategory.HeaderText = "Category";
cboCategory.DataSource = deptDowntimeCategories;
cboCategory.DisplayMember = "Name";
cboCategory.ValueMember = "CategoryID";
cboCategory.DataPropertyName = "Category";
cboCategory.Width = Convert.ToInt16(gridDowntime.Width * 0.20);
cboCategory.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cboCategory.AutoComplete = true;
gridDowntime.Columns.Add(cboCategory);
}
DataGridViewTextBoxColumn txtDowntime = new DataGridViewTextBoxColumn();
txtDowntime.HeaderText = "HoursDown";
txtDowntime.DataPropertyName = "HoursDown";
txtDowntime.Width = Convert.ToInt16(gridDowntime.Width * 0.15);
gridDowntime.Columns.Add(txtDowntime);
DataGridViewTextBoxColumn txtReason = new DataGridViewTextBoxColumn();
txtReason.HeaderText = "Reason";
txtReason.DataPropertyName = "Reason";
txtReason.Width = Convert.ToInt16(gridDowntime.Width * 0.60);
gridDowntime.Columns.Add(txtReason);
gridDowntime.DataSource = downtimeEntries;
lblStatus.Text = "Downtime grid reset.";
}
あなたはどのように作成している/データをバインディングを示すいくつかのコードを投稿できますか? –
@BryanCrosby - 編集を参照してください。 – MAW74656
行が「デフォルト値」に置き換えられたとはどういう意味ですか?私はあなたが提供したコードを試して、それは期待どおりに動作します。考えられるのは、行選択モードが予期しない動作をしているということです。私は完全な行を選択せずに行を削除すると混乱することが多いことがわかります。 –