2009-04-14 14 views
1
私はUltrawebgrid-更新イベント::

行n(いいえ主キーを持つ)データセットを見つける方法

protected void UltraWebGrid1_UpdateRow(object sender, RowEventArgs e) 

ので、私はDataTableの(グリッドで更新)行を(更新するを使用して

データテーブルにはプライマリキーもありません。 このようなデータテーブルにはどのような行がありますか?

私は、データセットにそれを更新することができるようにoldrowと同じである今、どのように私は(データセット内のDataTableの)行を見つけることができます

UltraGridRow oldrow = (UltraGridRow) e.Data; 

のために行くことができますか?

のDataTableを持っていない任意の主キー

答えて

1

あなたは、データベース表の行を一意に識別するためのいくつかの方法を持っている必要があります。通常、データベーステーブルには、プライマリキーとして機能することでこの目的に役立つフィールドが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人のユーザーが同じ識別機能(双子かもしれないのでしょうか?)を持っているため、更新ステートメントは1つではなく2つの行を更新します。

+0

+1。古い行全体が利用可能であるため、厳密な選択基準が知られています。行のフィールドごとに1つのWHERE句を使用するだけです。おそらく冗長ですが、古い行を識別する唯一の確実な方法である主キーがないためです。 – MSalters

関連する問題