DataGridView_CellValidating - PullRequest
       7

DataGridView_CellValidating

2 голосов
/ 05 июня 2009

У меня есть сетевое представление, которое я хотел бы проверить с помощью события cellvalidating. однако, поскольку пользователь не перемещается между ячейками или строками в сетке данных. просто вводит данные в ячейку в представлении данных и затем нажимает кнопку сохранения, когда событие проверки ячейки не запускается любая помощь будет принята с благодарностью.

Ответы [ 4 ]

3 голосов
/ 29 сентября 2009

Перед сохранением данных вы можете вызвать ValidateChildren в форме, чтобы заставить все элементы управления проверить себя. метод вернет false, если произошла ошибка проверки. Вы используете это так:

Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click
    If Me.ValidateChildren Then
       ...Save
    End If
End Sub
1 голос
/ 05 июня 2009

(Предполагая WinForms / .NET) Вы должны вызвать BindingSource.EndEdit ()

0 голосов
/ 30 сентября 2009
private void dgv_CellLeave(object sender, DataGridViewCellEventArgs e)
{

    if (e.RowIndex > -1)
    {
        if (dgv[e.ColumnIndex, e.RowIndex].IsInEditMode)
        {
            dgv.EndEdit();
        }
    }
}
0 голосов
/ 05 июня 2009

Это, очевидно, в среде Win Forms.

Вот ответ на вопрос.

Я принимаю данные в качестве источника данных для вида сетки

        DataTable dtSource = new DataTable();
        #region Data Table Creation

        dtSource.Columns.Add("NumericColumn1");
        dtSource.Columns.Add("NumericColumn2");
        dtSource.Columns.Add("NumericColumn3");


        #endregion

        #region Add Rows
        dtSource.Rows.Add("1", "2", "3");
        dtSource.Rows.Add("4", "5", "6");
        dtSource.Rows.Add("7", "8", "9");

        #endregion

        dataGridView1.DataSource = dtSource;

Моя цель состоит в том, чтобы проверить, ввел ли пользователь что-либо в какую-либо ячейку, кроме числового значения, после нажатия кнопки SAVE должно появиться сообщение об ошибке.

В событии проверки ячейки я написал следующее

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
   dataGridView1.Rows[e.RowIndex].ErrorText = "";

        if (!(IsNumeric(e.FormattedValue.ToString(), System.Globalization.NumberStyles.Integer)))
        {
            flag = !flag;
            dataGridView1.Rows[e.RowIndex].ErrorText = "Only numeric values are accepted";
        }
        else
        {
            flag = true;
        }
}

Функция IsNumeric аналогична

public bool IsNumeric(string Val, System.Globalization.NumberStyles NumberStyle)
{
    Double result;

    return Double.TryParse(Val, NumberStyle, System.Globalization.CultureInfo.CurrentCulture, out result);
}

И в событии кнопки SAVE я проверяю статус проверки

private void SAVE_Click(object sender, EventArgs e)
{
    if (flag == true)           
    {
        MessageBox.Show("Every thing is ok");
    }
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...