Как предложен jmcilhinney, DataGridViews связаны с DataTables (или иногда списков в моем случае), так что он сказал звучит, как он должна работы. Поскольку, судя по всему, это не так, как вы хотели, вот мое предложение:
Вы сказали, что у вас есть «поля», где вы можете обновлять, добавлять, удалять и т. Д. Выбранную строку, правильно? Это также звучит так, как будто вы делаете что-то с новыми строками. Поскольку вы предположили, что это привязка к привязке к базе данных, я сомневаюсь, что вы на самом деле добавляете их обычным способом, но вместо этого имеете какую-то программную альтернативу.
Итак, попробуйте реализовать свое решение как меньшее «переписать» и больше обновлений SQL. Когда пользователь вводит данные для строки, которую они хотят обновить, или новую строку, которую они хотели бы создать, выполните поиск строк для данного первичного ключа.
В случае DataTable, код будет выглядеть примерно так:
string s = "primaryKeyValue";
DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
foundRow.Item["DesiredColumn"] = newValue;
Источник: https://msdn.microsoft.com/en-us/library/y06xa2h1.aspx
В случае списка, связанного как DataSource, я полагаю, вы должны были бы чтобы сделать что-то вроде этого:
List<Thing> things = new List<Thing>(); // in case this wasn't obvious
Thing tempThing;
tempThing = things.Find(x => x.PartName.Contains("seat")));
tempThing.Value = newValue;
После того, как вы изменили основной источник данных, то, теоретически, вы должны быть в состоянии просто позвонить DataGridView.Ref resh(), но вам, возможно, придется сделать что-то более сложное, например, установить источник данных в null, а затем переподтвердить его, чтобы заставить EndEdit.
Я знаю, что это поздно, но я надеюсь, что это все еще помогает кому-то.
Кажется, что просто заполняется больше строк под текущими строками. –
Если вы очистили «DataTable» и привязаны к сетке, то нет текущих строк. Я думаю, вам нужно показать нам, что вы на самом деле делаете, а не описывать, что вы думаете, что делаете. – jmcilhinney
Datagridview заполняется из запроса mysql из базы данных, и когда я пробовал этот код, он ошибается, говоря «Не могу удалить этот список». –