Как найти строки в наборе данных (без первичного ключа) - PullRequest
1 голос
/ 14 апреля 2009

Я использую событие Ultrawebgrid-Update ::

protected void UltraWebGrid1_UpdateRow(object sender, RowEventArgs e)

Итак, я хочу обновить строку (обновленную в сетке) в таблице данных (внутри набора данных)

У данных тоже нет первичного ключа. Как мне найти строку с такими данными?

например я могу пойти на

UltraGridRow oldrow = (UltraGridRow) e.Data;

Теперь, как мне найти строку (в таблице данных внутри набора данных), которая совпадает с oldrow, чтобы я мог обновить ее в наборе данных?

У данных нет первичного ключа

Ответы [ 2 ]

1 голос
/ 14 апреля 2009

У вас должен быть какой-то способ уникальной идентификации строки в таблице базы данных. Обычно таблица базы данных имеет поле или поля, которые служат этой цели, выступая в качестве первичного ключа. Из того, что вы говорите, похоже, что у таблицы нет первичного ключа. Тем не менее, должна существовать некоторая комбинация данных, которую можно использовать для действия в качестве первичного ключа .

Например, таблица может содержать информацию о пользователе, и, комбинируя цвет волос, рост, вес, адрес и возраст, этого может быть достаточно для однозначной идентификации пользователя. Почему вы хотели бы сделать это, меня немного смущает, но мы можем предположить, что у вас есть веская причина для этого. Сформулировав эту комбинацию, вам нужно поместить этих ребят в предложение where вашего оператора SQL UPDATE, чтобы определить строку, которую вы хотите обновить:

UPDATE TABLE_WITH_NO_PRIMARY_KEY SET NAME = 'Bobby Tables'
  WHERE HAIR_COLOUR = 'RED' AND HEIGHT = '215' AND SO ON

Риск при этом заключается в том, что вы можете столкнуться с ситуацией, когда более чем один пользователь имеет одинаковые идентифицирующие функции (может быть, они близнецы?), Поэтому оператор update обновит обе строки вместо одной.

0 голосов
/ 14 апреля 2009

В этом случае вам нужно будет использовать LinqToDataSets, если вы не хотите перебирать все строки. Вы можете найти примеры LinqToDataSet здесь и здесь .

LinkText 1: http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx

LinkText 2: http://msdn.microsoft.com/en-us/library/bb386977.aspx

...