datagridview的不允许用户删除的行 [英] datagridview not allowing user to delete row
问题描述
我绑定到一个DataTable一个DataGridView。该列不自动生成的,我在代码中创建它们。我希望我的用户将能够添加和删除行,所以我有AllowUserToAddRows = TRUE,AllowUserToDeleteRows =真
现在的问题是:当他们选择一行,按DEL键,该信息由行单元格的默认值取代。该行不会消失。
这是什么行为(为什么/发生了什么),我怎么能围绕它得到什么?
这里是我的网创建代码:
私人无效resetDowntimeGrid()
{
downtimeEntries =新的DataTable( );
downtimeEntries.Columns.Add(类别的typeof(INT));
downtimeEntries.Columns.Add(HoursDown);
downtimeEntries.Columns.Add(理);
//deptDowntimeCategories.Select(,ListOrder ASC);
gridDowntime.Columns.Clear();
DataGridViewComboBoxColumn cboCategory =新DataGridViewComboBoxColumn();
{
cboCategory.HeaderText =类别;
cboCategory.DataSource = deptDowntimeCategories;
cboCategory.DisplayMember =姓名;
cboCategory.ValueMember =类别ID;
cboCategory.DataPropertyName =类别;
cboCategory.Width = Convert.ToInt16(gridDowntime.Width * 0.20);
cboCategory.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cboCategory.AutoComplete = TRUE;
gridDowntime.Columns.Add(cboCategory);
}
DataGridViewTextBoxColumn txtDowntime =新DataGridViewTextBoxColumn();
txtDowntime.HeaderText =HoursDown;
txtDowntime.DataPropertyName =HoursDown;
txtDowntime.Width = Convert.ToInt16(gridDowntime.Width * 0.15);
gridDowntime.Columns.Add(txtDowntime);
DataGridViewTextBoxColumn txtReason =新DataGridViewTextBoxColumn();
txtReason.HeaderText =理性;
txtReason.DataPropertyName =理性;
txtReason.Width = Convert.ToInt16(gridDowntime.Width * 0.60);
gridDowntime.Columns.Add(txtReason);
gridDowntime.DataSource = downtimeEntries;
lblStatus.Text =停机电网复位。
}
我创建了一个空的WinForm和只是把电网规范进去。所不同的是我怎么有 DataGridView.EditMode
设置。我是有 = EditOnEnter
,但删除的作品完美,如果我将它设置 = EditOnKeystroke。
I have a datagridview bound to a datatable. The columns are not autogenerated, I create them in code. I want my user's to be able to add and delete a row, so I have AllowUserToAddRows = true, AllowUserToDeleteRows = true.
The problem is: when they select a row and press DEL, the information is replaced by the row cell's default values. The row does not go away.
What is this behavior (why/what is happening), and how can I get around it?
Here is my grid creation code:
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.";
}
I created an empty winform and just put the grid code into it. The difference was how I had the DataGridView.EditMode
set. I had it = EditOnEnter
, but the delete works perfectly if I set it = EditOnKeystroke.
这篇关于datagridview的不允许用户删除的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!