사용자가 테이블의 주문을 정의 할 수있는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/525652

문제

사용자가 테이블의 주문을 정의 할 수있는 가장 좋은 방법은 무엇입니까?

우리는 SQL Server 2005 및 DeVexpress 컨트롤을 사용하고 있습니다.

다음이 포함 된 테이블이 있습니다.

  1. 프로세스 a
  2. 프로세스 b
  3. 프로세스 c
  4. 보고 a
  5. 보고서 b
  6. 보고 c

우리는 사용자가 원하는대로 주문을 변경할 수 있도록하고 싶습니다.

다음은 다음과 같습니다.

  1. 프로세스 c
  2. 프로세스 a
  3. 프로세스 b
  4. 보고서 b
  5. 보고 a
  6. 보고 c

이를 수용하기 위해 응용 프로그램이 유지 관리하는 테이블에 DisplayOrder (int) 필드를 추가했습니다.

INT 필드를 사용하는 것이 사용자 정의 된 주문에 가장 적합한 솔루션입니까?

이것을 달성 할 다른 방법이 있습니까?

내가 묻는 이유는 현재 응용 프로그램에서 줄을 아래로 이동하는 데 약 1 초가 걸리기 때문입니다. 코드를 열려고 코드를 열어야하는 이유가 너무 오래 걸리는 이유를 확인하고 오버플로 전문가가 좋은 아이디어를 가지고 있다면 그 당시에 구현할 수 있습니다.

궁금한 점이 있다면 여기에 응용 프로그램이 DisplayOrder를 편집 할 수 있다고 생각하는 방법은 다음과 같습니다.

  1. 테이블을 그리드 뷰에로드하십시오
  2. 행을 선택하십시오
  3. 아래로 이동 버튼을 클릭합니다 (위로 이동 버튼도 있습니다)
  4. 클릭 이벤트는 현재 행의 DisplayOrder를 그 아래 행으로 바꾸는 것입니다.
  5. 두 레코드 모두에 대한 변경은 데이터베이스에 다시 기록됩니다.
  6. 클릭당 약 1 초가 소요됩니다 (예 : 10 초과 같은 10 초)
도움이 되었습니까?

해결책

각 클릭마다 DB를 업데이트하고 있기 때문에 교환 당 1 초가 걸릴 수 있습니까? 어쩌면 데이터를 다시 선택하는 것일까 요?

로컬 객체로 데이터를 선택하십시오. 그리드의 해당 물체에 바인딩하십시오. 객체를 위아래로 움직일 때 디스플레이 순서 속성을 조정하십시오. 그런 다음 DB에 대한 업데이트 만 수행하십시오

  1. 사용자가 마지막으로 저장을 클릭하면
  2. 객체의 값이 변경된 경우.

다른 팁

사용자가 마음을 바꿀 수 있고 피터 모리스 (Peter Morris)가 제안한 것처럼 성능 문제를 극복 할 수 있기 때문에 저장 결정을 명시 적 저장 버튼으로 옮길 것입니다.

더 고려해야 할 사항 - 명시 적으로 상단으로 이동하여 하단 항목으로 이동합니다.

엔터프라이즈 시스템에서 사용자 중심의 검색 가능한 항목 및보고 항목을 선택하기 위해 이러한 종류의 접근 방식을 사용하여 매우 성공적인 UI를 구현했습니다. UI에 대한 자세한 내용은 다음과 같습니다 볼 수 있습니다 (친절하십시오. 약 15 살이되었음을 기억하십시오 - 평평한 모노 시절에 돌아 왔습니다!). 많은 사용자 테스트의 주요 개선-이 주문을 저장하기위한 스위트 스팟은 사용자 당 또는 회사 별이 아니라 그룹당 그룹이었습니다. 그룹은 동일한 시작 페이지를 가진 사람들이 함께 일하는 사람들이었습니다 (본질적으로 대규모 연결된 그래프에서 동일한 루트). 우리는 조직에 약 7 개의 고유 한 그룹이있었습니다.

따라서 사용자 당 또는 그룹 별 접근 방식을 사용하는 경우 정렬 데이터를 별도의 테이블로 가져와 데이터 키를 서수 정수에 맵핑해야합니다.

사용자가 설정하고 유지하려는 디스플레이 순서에 대해 이야기하는 경우, 이는 사용자 ID와 함께 별도의 테이블과보고하는 레코드의 ID와 디스플레이 순서 열을 사용해야합니다. 그런 다음 해당 페이지로 데이터를 가져 오는 쿼리가 사용자 기본 설정 테이블에 가입합니다.

사람이 화면을보고있는 시간 동안 Temporaily를 설정하려면 사용자 인터페이스를 Thorugh하십시오.

어쨌든 기본 테이블의 레코드를 재정렬하지 않아도됩니다. 즉, 사용자 A가 한 설정을 원하고 사용자 B가 다른 설정으로 변경하려고하는 레이스 조건에 빠지기 때문에 선택이 좋지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top