Когда я добавляю данные в строку в моем DataGridView, я хочу добавить пустую строку. Это происходит, но когда я сосредотачиваюсь на поле в текущей строке и не ввожу никаких данных, значения по умолчанию заполняются для этой строки, а новая строка также заполняется значениями по умолчанию. Затем добавляется еще одна пустая строка, как вы можете видеть из анимированного GIF, который я вставил ниже.
Я хотел посмотреть, сможет ли кто-нибудь помочь мне определить, что делать, чтобы не заполнять пустую строку значениями по умолчанию, а также текущей строкой. После того, как вы оставили поле в текущей строке и не указали значение, все значения по умолчанию могут заполнять эту строку, но я не хочу, чтобы что-либо заполняло пустую строку.
Я вставил соответствующий код из класса формы ниже. Я попытался исключить те части класса, которые не имели отношения к вопросу:
public partial class frmCharitableContributions : Form
{
private readonly string connectionString = ConnectionStringProvider.GetConnectionString();
private readonly BusinessLayer bl = new BusinessLayer();
private void FrmCharitableContributions_Load(object sender, EventArgs e)
{
PopulateDataGridView();
}
private void PopulateDataGridView()
{
try
{
DataSet dsCharitableContributions = bl.GetCharitableContributions(connectionString);
CharitableContributionsDataGridView.DataSource = dsCharitableContributions.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show("Exception Thrown in PopulateDataGridView: " + ex.Message);
}
}
private void CharitableContributionsDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (CharitableContributionsDataGridView.CurrentRow != null)
{
DataGridViewRow dgvRow = CharitableContributionsDataGridView.CurrentRow;
bool isValid = ValidateFields(dgvRow);
if (isValid)
{
bl.InsertOrUpdateCharitableContributions(connectionString, dgvRow);
}
else
{
return;
}
BeginInvoke(new MethodInvoker(PopulateDataGridView));
}
}
// This event will fire when a cell recognize editing
private void CharitableContributionsDataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
CharitableContributionsDataGridView.AllowUserToAddRows = false;
}
// This event will fire when a cell recognizes the end of editing
// Allow or deny adding a new row here based on conditions such as required fields being filled in or selected
private void CharitableContributionsDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int currentRowIndex = e.RowIndex;
DataGridViewRow dgvRow = CharitableContributionsDataGridView.Rows[currentRowIndex];
if (dgvRow.Cells["cbxCharitableOrganizationName"].Value.ToString() != "")
{
if (CharitableContributionsDataGridView.CurrentRow != null)
{
bl.InsertOrUpdateCharitableContributions(connectionString, dgvRow);
CharitableContributionsDataGridView.AllowUserToAddRows = true;
}
}
}
}