2010-02-10 8 views
2

비즈니스 로직 및 데이터베이스 로직을 개발 한 경험이 있으며 주로 C#으로 작업합니다. 이제 ASP.NET에서 데이터 기반 프레젠테이션 계층을 구축하고 싶습니다. 데이터 그리드를 어떻게 채워야하는지 궁금합니다.모범 사례 그리드 바인딩

나는 BLL에서 검색 한 "고객"과 같은 비즈니스 엔티티의 IList - Collections를 보유하고 있습니다. 전체 컬렉션을 컨트롤에 바인딩하기는 쉽지만 내 비즈니스 엔터티의 모든 공용 속성은 열로 표시됩니다. 표시 할 속성, 정렬 순서 및 표시 방법 (예 : DateTime as ShortTimeString)을 결정할 수 없습니다.

모범 사례를 어디에서 찾을 수 있는지 또는이 문제를 어떻게 해결했는지 알려주십시오.

안부, 다니엘 랭

답변

2

그리드에 바인딩 할 때마다 항상 AutoGenerateColumns = false 속성이 있어야합니다. 그런 다음 필자가 사용하는 열과 템플릿을 명시 적으로 정의합니다.

다음 코더는 오브젝트에 뭔가를 추가하고 그리드에 바인딩하는 모든 곳에 자동으로 추가된다는 것을 인식하지 못하기 때문에 이것이 최선의 방법이라고 생각합니다. 또한 각 필드를 실제로 보는지 또는 어떤 유형의 템플릿으로 볼 필요가 있는지를 고려하게합니다.

AutoGenerateColumns 속성은 데모에서 정말 멋지게 보이지만 현실 세계에서는 그다지 유용하지 않으며 예기치 않은 문제가 발생할 수 있습니다.

+0

제안 해 주셔서 감사합니다. "실제적인"우수 사례 인 것처럼 보입니다. –

0

나는 나의이있는 GridViews 등 구속의 형식을 트릭의 "더러운"종류를 사용합니다. 컨트롤을 추가하고 나면 디자이너에서 해당 데이터 소스를 선택할 수 있습니다. 일반적으로 ObjectDataSource를 선택하고 다음 마법사 화면에서 데이터 개체 만 표시하는 상자를 선택 취소합니다. 그런 다음 BLL에서 바인딩 할 함수 (또는 동일한 클래스/데이터 소스를 반환하는 메서드)를 찾아서 선택합니다. 마법사를 통해 나는 그 메소드에 실제로 바인딩하는 것처럼 불을 뿜으며, 완료되면 컨트롤은 해당 소스에 대한 양방향 바인딩을 위해 형식이 지정됩니다.

그 후에, 나는 컨트롤의 데이터 소스를 "NONE"으로 설정 한 형태로 objectdatasource 객체를 삭제합니다. 컨트롤을 다시 구성하라는 메시지가 나타나면 아니오를 누릅니다. 이제 컨트롤이 포맷되고 언 바운드됩니다. 여기에서 (GridViews의 경우) 열 편집 및 디자이너와의 위치 조정, 스타일 적용, 바인딩 조정 등을 수행 할 수 있습니다.

그러나 모범 사례로는 참된 2 - 도로 바인딩. 이러한 작업을 처리하기 위해 특정 BLL/DAL 개체가 있으므로 데이터를 검색하는 메서드를 사용하고 데이터를 입력하는 메서드를 사용합니다.

0

@Kelsey에서 설명한대로 AutoGenerateColumns = false을 설정하고 수동으로 열을 정의해야합니다. 그러나 특정 정보 만 표시해야하지만 어떤 부분을 표시하고 어떤 형식인지는 알 수 없습니다.

내가 결정할 수 없습니다 그들이 주문하는 방법을 보여주고, 수있는 속성들은 (ShortTimeString과 같은 예를 들어, 날짜 시간) 표시 방법.

모범 사례를 어디에서 찾을 수 있는지 말해 주시겠습니까? 아니면 에서이 문제를 해결했는지 말씀해주십시오.

이것은 실제로 응용 프로그램 사용자에게 가장 유용한 것이 무엇인지에 따라 달라집니다. 자신에게 몇 가지 질문을하십시오. 자신보다 다른 사람에게이 질문을하는 것이 더 좋습니다.

일부의 생각 :

  • 은 무엇 사용자가보고에 관심이있을 것인가?
  • 그냥
  • 그것은 사용자에게
  • 날짜 시간 형식을 어떤 목적에 봉사해야 표시하는 데이터를 표시하지 않음 - 사용자가 ShortTimeString 이상 볼 필요합니까? 그 날을 아는 것이 도움이 될까요? 어쩌면 긴 문자열을 툴팁에 표시하고 공간을 절약하기 위해 짧게 표시하십시오.
+0

도움을 주셔서 감사합니다. 당신이 제 영어 실력이 좋지 않다는 것을 알았을 것입니다. 실제로 어떤 속성이 보이지 않는 것을 어떻게 달성 할 수 있었는지 모르겠습니다. 안녕히 계십시오, 당신의 팁은 도움이되었고 나는 내 작업에서 그들을 고려할 것입니다! –