728x90
반응형
문제 원인
특정 컨트롤에서는 KeyFieldName을 설정해야 한다. KeyFieldName이란 primary key처럼 row를 unique하게 구분해줄 컬럼을 설정하는 것이다.
그러다 가끔 이런 에러 메세지를 마주한다.
This action has been disabled for security reasons.
The control cannot serialize complex primary key field values.
이 에러가 발생하는 이유는
serialize, 직렬화하기에 primary key field가 너무 복잡하다는 것이다.
즉, 간단한 number같은 key field로 바꿔달라는 의미이다.
(사실, devexpress docs를 보면, string, number를 다 허용한다고 되어있지만, 어찌된 일인지 조건을 만족했음에도 불구하고 저런 에러가 뜨곤 한다. )
해결 방법
해결 방법은 아주 간단하다.
만약 본인이 DB에서 데이터를 받아오고 있다면
SELECT 절에
ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowNum
위의 컬럼 하나만 추가해주자.
SELECT한 데이터 순서대로 NUMBER를 붙여주는 쿼리이다.
그리고 컨트롤의 KeyFieldName을 RowNum으로 잡아주면
어떠한 데이터의 영향 없이, 컨트롤의 에러가 발생하는 일 없이, KeyFieldName을 설정이 가능하다.
728x90
반응형
'Skills > DevExpress' 카테고리의 다른 글
[DevExpress] nvarchar(8) 타입을 Date 타입으로 바인딩하는 방법 (0) | 2023.11.21 |
---|---|
[DevExpress] ASPXGridView 주요 설정 정리 (1) | 2023.11.20 |
Javascript 함수를 사용해서 컴포넌트 보이고 숨기게 만들기 (0) | 2023.11.09 |
[Error] Uncaught ReferenceError: ~~~ is not defined (0) | 2023.11.09 |
[Error] A primary key field specified using the KeyFieldName property is not found (0) | 2023.09.20 |