2009-04-14 5 views
1
나는 Ultrawebgrid- 업데이트 이벤트 ::

행 n (아니오 기본 키) 데이터 세트 찾는 방법

protected void UltraWebGrid1_UpdateRow(object sender, RowEventArgs e) 

그래서, 나는 데이터 테이블에서 (그리드 업데이트) 행을 (업데이트 할를 사용하여

데이터 세트 내부)

데이터 테이블에 기본 키가 없습니다 .. 어떻게 이러한 데이터 테이블에서 모든 행을 찾을 수 있습니까?

나는 데이터 세트에 업데이트 할 수 있도록 oldrow과 동일하다, 내가 어떻게 (데이터 집합 내부의 데이터 테이블에) 행을 찾을 수 있습니다 지금

UltraGridRow oldrow = (UltraGridRow) e.Data; 

갈 수 있습니까?

DataTable을 가지고 있지 않는 기본 키

답변

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 

이 일에 위험은 당신이 어디에 상황으로 실행할 수 있습니다 더 한 명 이상의 사용자가 동일한 식별 기능 (쌍둥이 일 가능성이 있습니까?)을 가지므로 업데이트 명령문은 단 하나가 아닌 두 행을 모두 업데이트합니다.

+0

+1. 전체 이전 행을 사용할 수 있기 때문에 정확한 선택 기준이 알려져 있습니다. 행의 필드 당 하나의 WHERE 절만 사용하면됩니다. 아마도 중복되지만 이전 행을 식별하는 유일한 방법은 기본 키가 없기 때문일 수 있습니다. – MSalters

관련 문제