본문 바로가기
Skills/DevExpress

[Error] This action has been disabled for security reasons. The control cannot serialize complex primary key field values. 해결방법

by Hoseok 2023. 11. 27.
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
반응형