1

我使用 Ultrawebgrid- 更新事件::

protected void UltraWebGrid1_UpdateRow(object sender, RowEventArgs e)

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

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

例如,我可以去

UltraGridRow oldrow = (UltraGridRow) e.Data;

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

数据表没有任何主键

4

2 回答 2

1

您需要有某种方法来唯一标识数据库表中的一行。通常,数据库表将具有一个或多个字段,通过充当主键来实现此目的。从您所说的来看,听起来该表没有主键。然而,需要有一些数据组合可以用作主键

例如,该表可能包含用户信息,并且通过结合头发颜色、身高、体重、地址和年龄,这可能足以唯一地识别用户。为什么你想要这样做让我有点困惑,但我们可以假设你有充分的理由想要这样做。制定了这种组合后,您需要将这些人放入whereSQL UPDATE 语句的子句中,以识别要更新的行:

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

这样做的风险是您可能会遇到一个情况,即多个用户具有相同的识别特征(也许他们是双胞胎?),因此更新语句将更新两行而不是只更新一行。

于 2009-04-14T09:22:19.717 回答
0

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

链接文本 1:http: //msdn.microsoft.com/en-us/vbasic/bb688086.aspx

链接文本 2:http: //msdn.microsoft.com/en-us/library/bb386977.aspx

于 2009-04-14T09:23:22.193 回答