문제

나는 새로운 usercontrols 정보의 정확성과 신뢰성을 보장성 중 하나는 지금까지,그래서 나와 함께.내가 오늘 usercontrols 있어야 할 자에 의존하지 않는 모든 정보는 부모에서 컨테이너입니다.나는 부분이지만,내가 이해하는 데 문제가는"오른쪽"방법을 디자인하는 내 프로그램을 주는 원리입니다.

내가 만드 웹 양식에서는 C#에 있는 페이지 정렬에는 여기에 포함되지 않습니다.했 정렬에 ascx 파일을 끌어다 내 페이지.의 정렬은 몇 날짜 선택 및트의 결과를 보여 SQL 저장된 절차입니다.

고 재사용이 제한,그러나 나는 방법을 알아낼 수 없습니다"하는 말은"정렬 저장되어 어떤 절차를 하겠어요한 특정 페이지로 나에 대을 위반하지 않고"에 의존하지 않는 부모 컨테이너"규칙이 있습니다.

감사

도움이 되었습니까?

해결책

부모 컨테이너에 의존하지 않는다고해서 의사 소통을 할 수 없다는 의미는 아닙니다. 부모가 설정할 사용자 컨트롤에 속성을 노출시킵니다. 그러나 기본값이 있으므로 충돌하지 않습니다.

또한 이것이 매우 구체적인 제어라면 부모에게 의존하는 것이 나쁘지 않을 이유가 없습니다. 이상적이지는 않지만 사용자 컨트롤을 사용하여 코드 분리를 제공합니다.

다른 팁

귀하의 컨트롤은 데이터의 출처를 알 필요가 없습니다. 저장된 절차 나 다른 것에 대해 알 필요는 없습니다. 알아야 할 것은 표시해야 할 데이터 만 있으면됩니다. 제어가 올바르게 이해되면 날짜 필터가있는 그리드입니다. 데이터를 수신하고 데이터를 표시하고 날짜별로 필터링합니다. 괜찮습니다. 알아야 할 것은 표시해야 할 데이터와 부모의 기본 시작 및 종료 날짜 일 수 있습니다.

부모와 의사 소통하지 않으면 사용자 컨트롤의 진정한 힘을 놓치게됩니다. 이 경우 캡슐화를 너무 멀리 캡슐화하고 있다고 생각합니다.

다양한 사용자 데이터의 테이블 또는 그리드 뷰 인 사용자 컨트롤이 있다고 가정합니다. 필연적으로 사용자 컨트롤은 사용자의 고유 식별자에 대해 알아야 할 것이 필요합니다. 데이터를 어디에 있든 데이터를 가져 오기 위해서는 부모 페이지가 설정할 수있는 공개 속성을 만들 수 있습니다.

또한 사용자 컨트롤 내의 조치가 부모에 대한 조치를 유발 해야하는 경우가있을 것임을 명심하십시오. 이벤트 대표단은 여기에서 플레이하며 매우 유용하며 제 생각에는 사용자 컨트롤을 더욱 유용하게 만듭니다.

사용자 컨트롤과 부모가 앞뒤로 이야기하지 않는 것에 대한 전체 아이디어를 떨어 뜨리면 훨씬 쉬운 일을 찾을 수 있습니다.

따라서이 사용자 컨트롤 내부에는 저장된 프로 시저가 반환하는 데이터 세트에 데이터를 데이터에 데이터를 연결할 수있는 것들이 있습니까?

다음은이를 처리하는 한 가지 방법입니다. 저장된 절차를 사용자 컨트롤에 전달하려고 시도하는 대신 사용자 컨트롤이 사용자 컨트롤의 공개 속성에 의존하는 데이터 세트를 만드십시오.

런타임에 사용자 컨트롤을 벗어난 코드는 적절한 저장된 ProceCure를 실행하고 사용자 컨트롤에서 데이터 세트 속성을 저장된 Proc에서 반환 한 결과로 설정합니다.

으로 다른 사람은 지적,사용자 정의 컨트롤 요구하는 표준 방식으로의 전달하는 기도와 행동을 합니다.이지 않는 것을 의미가 있을 참조하여 컨테이너,그리고 그러므로 무엇(MyPage.aspx)실제적으로 포함한다.

는 것을 발견했 필수 불가결과 함께 작업하는 동안 사용자 컨트롤는 이벤트입니다.배우 이벤트와 방법을 사용합니다.이벤트는 훌륭한 방법으로 통신의 행동입니다.

에서 당신의 예,내가 분리 기준(날짜를 입력란)으로 자신의 사용자가 제어할 수 있습니다.새로 만드는 클래스를 상속시키려면 다음을 포함하는 조건(DateTime 필드).사용자가 검색을 클릭,화재 이벤트(의 유형 EventHandler<YourEventArgs> 는)사용자 정의 EventArgs.이 페이지는 이벤트를 처리,쿼리 데이터베이스,그리고 그런 다음 전달의 결과로 공공 또는 내부 메서드에서 두 번째 사용자 정의 컨트롤 표시합니다.

키 여기,당신의 조건을 제어 다시 사용할 수 있는 다른 페이지에야 할 필요가 있다면 호출의 다른 저장합니다.의 생각 삽입 vs 업데이트 시나리오를 나타냅니다.종종,UI 구성 요소는 동일합니다.을 만들 수 있습 제어 사용에 두 개의 서로 다른 페이지로 두 개의 서로 다른 행동(AddRecord.aspx 및 UpdateRecord.aspx).또한,귀하의 제어 레코드를 표시하는 것은 매우 쉽게 다시 사용할 수 있습니다.

하나의 거대한 혜택은 당신의 페이지와 컨트롤가 오히려 작습니다.각각의 제어/페이지 정말로 걱정은 하위 집합의 기능이 있습니다.코드가 될 것이 더 적은 발굴하고 유지하기 쉽습니다.

"말하기"Usercontrol 내가 실행하고 싶은 저장된 절차

이벤트/대의원을 찾고있는 것 같습니다
컨트롤이 이벤트를 노출시키고 부모가 핸들러를 추가하도록하십시오 (아마도 하나의 이벤트 만 추가하도록 강요하려면 생성자에있을 수 있습니다).
또는 명령/전략 패턴을 사용할 수 있습니다 - 부모가 방법을 캡슐화하고 캡슐화 객체를 생성자의 컨트롤로 보냅니다.

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