Как предотвратить дублирование записи в DataGridView в C # WinForms - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть Data GridView с именем grdInformationDetails, который загружается при загрузке события формы SearchInformation.При двойном щелчке по событию этого GridView у меня есть код, который отправляет значения строк в форму AddForm для обновления записи.После обновления GridView дублирует записи.Я уже установил для источника данных GridView значение null перед загрузкой Record из базы данных, а также для свойства autoGeneratedColumn, установленного в false.Я не понимаю, где я делаю неправильно.Пожалуйста, помогите.

Вот событие двойного щелчка

 private void grdInformationDetails_DoubleClick(object sender, EventArgs e)
    {

        int rowToUpdate = grdInformationDetails.Rows.GetFirstRow(DataGridViewElementStates.Selected);
        int employeeId = Convert.ToInt32(grdInformationDetails.Rows[rowToUpdate].Cells["id"].Value);
        ShowAddInfoForm(employeeId, true);
    }

Вот код ShowAddInfoForm

 private void ShowAddInfoForm(int employeeId, bool isupdate)
    {
        AddInfo ainfo = new AddInfo();
        ainfo.EmployeeId = employeeId;
        ainfo.Isupdate = isupdate;
        ainfo.ShowDialog();
        grdInformationDetails.AutoGenerateColumns = false;
        grdInformationDetails.DataSource = null;
        LoadGridView();
    }

Вот изображение записи, которая присутствует в базе данныхenter image description here

Вот дубликат записи после обновления enter image description here

ОБНОВЛЕНИЕ: Вот метод LoadGridView для загрузки GridView

 private void LoadGridView()
    {
        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand(@"SELECT * FROM TableInfo", con);
            con.Open();
            using (SqlDataAdapter ad = new SqlDataAdapter(cmd))
            {
                ad.Fill(dtEmployees);
                grdInformationDetails.DataSource = dtEmployees;
                grdInformationDetails.Columns["Id"].Visible = false;
            }
        }
    }

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете изменить свой sql следующим образом:

SELECT distinct column_a, column_b FROM TableInfo

или вы можете преобразовать данные, как только вы вернете их обратно в linq, и использовать метод DISTINCT, например,

ad.Distinct()

AТретий вариант - циклически проходить по вашей сетке и удалять дублирующиеся значения.

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