如何在数据集中查找行(没有主键)

时间:2009-04-14 09:07:27

标签: dataset ultrawebgrid

我使用Ultrawebgrid- Update事件::

protected void UltraWebGrid1_UpdateRow(object sender, RowEventArgs e)

所以,我想更新数据表中的行(在网格中更新)(在数据集内)

数据表也没有任何主键。 如何在这样的数据表中找到任何行?

例如我可以去

UltraGridRow oldrow = (UltraGridRow) e.Data;

现在,我怎样才能找到与oldrow相同的行(在数据集内的数据表中),以便我可以在数据集中更新它?

数据表没有任何主键

2 个答案:

答案 0 :(得分:1)

您需要有一些方法来唯一标识数据库表中的行。通常,数据库表将具有一个或多个字段,通过充当主键来实现此目的。根据你的说法,听起来桌子上没有主键。 Nevertheless, there needs to be some combination of data that can be used to act like a primary key

例如,该表可能包含用户信息,并且通过组合头发颜色,高度,重量,地址和年龄,这可以足以唯一地标识用户。为什么你想这样做对我来说有点混乱,但我们可以假设你有充分的理由想要这样做。在制定了这个组合之后,您需要将这些人放入SQL UPDATE语句的where子句中以标识要更新的行:

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

执行此操作的风险是您可能遇到多个用户具有相同识别功能的情况(可能是双胞胎?)因此更新语句将更新两行而不是一行。

答案 1 :(得分:0)

在这种情况下,如果您不希望遍历所有行,则需要使用LinqToDataSets。您可以找到LinqToDataSet herehere的示例。

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

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