2013-03-21 2 views
0

나는 DataGrid입니다. 나는 DataTable에 바인딩하여 3 개의 BoundColumn을 결과로 표시합니다.DataGrid - 하나의 열이 다른 데이터를 사용합니다.

다른 데이터와 연결되는 네 번째 열을 갖고 싶습니다. 예를 들어 DataGrid의 열 3이 UserID 인 경우 데이터베이스를 쿼리하고 사용자의 첫 번째 이름을 검색하는 데 사용하고 싶습니다. , 네 번째 열에 표시하십시오.

권장되는 방법이 있습니까? 저는 DataGrid 전문가가 아니지만 TemplateColumn 또는 그 라인을 따라 무엇인가 찾고 있어야합니까?

이 모든 쿼리에 어떤 이벤트를 연결해야합니까? OnItemDataBound?

답변

3

원래 쿼리의 일부로 사용자의 이름을 반환하고 BoundColumn 만 사용하는 것이 좋습니다. 표시하기 전에 데이터를 수정해야하는 경우 TemplateColumnOnItemDataBound 이벤트를 사용하여 데이터를 조작 할 수 있습니다.

쿼리를 실행하면 OnItemDataBound은 내가 권장할만한 것이 아닙니다. 따라서 그리드에 100 개의 레코드가 동시에 표시되면 페이지로드 당 100 개의 추가 쿼리를 실행하고 싶습니까? 이것은 구현하는 경우 테스트 중에 이유 내에서 실행될 수있는 것입니다. 일단 부하가 걸리면 수백 가지의 추가 쿼리를 실행하는 것이 좋은 생각이 아니라는 것을 알 수 있습니다 ... 원본 쿼리를 수정하거나 데이터베이스 구조와 복잡성에 따라 비정규 화 된 테이블을 만들면 해결할 수 있습니다. 질문.

비슷한 문제가 발생했을 때 나는 비정규 화 된 테이블 경로를 사용했습니다.

+0

100 개의 추가 쿼리를 실행하고 싶지 않을 수도 있습니다. 그러나 문제는 원래 데이터가 Excel 워크 시트에서 앞서 언급 한 DataTable로 변환된다는 것입니다. 그리고 워크 시트에 사용자의 이름이 없습니다. 다행히도 주어진 페이지에 대해 워크 시트에 100 개 이상의 항목이 없을 것입니다 (비즈니스 관계자가 마음을 교차 시켰습니다). – larryq

+2

@larryq :이 경우 가장 좋은 방법은 두 번째 쿼리를 실행하여 사용자의 그런 다음 코드를 사용하여 데이터 테이블에 열을 추가하고 각 행의 사용자 이름을 채 웁니다. 완료되면 데이터 바인딩을 수행하십시오. – NotMe

+0

@Chris Lively : 훌륭한 아이디어, 고마워. – larryq

0

다른 값을 얻으려면 SQL 문에서 조인을 사용하십시오.