2013-03-22 3 views
1

두 개의 테이블을 사용하는 동적 데이터 앱이 있습니다. 테이블 중 하나에는이 테이블의 값으로 채워진 드롭 다운을 사용하여 다른 테이블의 열을 기반으로 설정하고자하는 열이 있습니다. 현재이 열은 페이지에서 텍스트 상자 항목으로 생성됩니다. 그러나 Dynamic Data는 이에 대한 UIHint를 제공하기 위해 드롭 다운 항목을 제공하지 않습니다. Enumeration 필드 컨트롤을 수정하려고 시도했지만 작동시키지 못했습니다.동적 데이터에서 텍스트 상자를 드롭 다운으로 변환

테이블 중 하나의 삽입 페이지에서 새 항목을 추가하는 것으로 지정해야합니다. 삽입 페이지의 항목 중 하나를 다른 테이블의 열에서 값을 기반으로 설정하려면 해당 다른 테이블의 열에서 채워진 값의 드롭 다운을 사용하고 싶습니다.

+0

순간에 어떻게하고 있는지 보여주는 몇 가지 코드를 추가하면 도움이 될 것입니다. – JRoughan

+0

실제로 지난 며칠 동안 스스로 알아낼 수있었습니다. 내 솔루션을 게시했습니다. – MattD

답변

0

그래서 나는 실제로 내 자신에이 일을 알아낼 수 있었다. 기존 필드 템플릿 중 하나의 코드를 수정하여 내가 원하는 것을 할 수 있습니다.

앞에서 설명한 것처럼 삽입 페이지의 데이터 입력을위한 텍스트 상자를 가져 와서 해당 드롭 다운 목록이 다른 테이블의 데이터로 구성되는 값 드롭 다운 목록으로 전환하는 것이 좋습니다. 그런 다음 사용자가 필요한 값을 선택하면 삽입 프로세스의 일부로 데이터베이스로 다시 전달됩니다.

먼저 FieldTemplates 폴더에 새 컨트롤을 만듭니다. DropDown과 같은 이름을 지정하십시오. ascx, 코드 숨김 파일 및 디자이너 파일을 갖게됩니다.

그런 다음 ascum 파일에서 Enumeration_Edit에 대한 코드를 가져 와서 새 드롭 다운 컨트롤의 ascx 파일에 복사합니다. DropDownList 컨트롤의 ID 이름을 변경해야 할 수 있습니다.

코드를 사용하여 Enumeration_Edit 컨트롤의 코드에서 코드를 복사 한 다음 드롭 다운의 요구 사항을 충족하도록 코드를 변경합니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     OnDataBinding(); 
    } 

    SetUpValidator(RequiredFieldValidator1); 
    SetUpValidator(DynamicValidator1); 
} 

귀하의 OnDataBinding이 같이 설치해야한다 :

귀하의 PageLoad 클래스는 다음과 같아야합니다

public void OnDataBinding() 
{ 
    //Code for binding data from a query/stored proc to a dropdown should go here. 
} 

합니다 (ExtractValues ​​유지) 및 해당 DataControl() 클래스,하지만 당신은 제거 할 수 EnumType() 클래스

필요한 경우 참조를 추가해야합니다. Enumeration_Edit 컨트롤과 새 컨트롤에 대한 코드를 비교해보십시오.

이제 열의 텍스트 상자에서 컨트롤을 사용하여 데이터 삽입을 제어하려고합니다. [UIHint("DropDown")]을 테이블의 부분 클래스에 대한 적절한 열 항목에 추가하면 표시 될 때 해당 열의 모든 인스턴스에 컨트롤이 적용됩니다. 각 테이블에 대해 사용자 지정 페이지 설정이 있으며이 컨트롤을 특정 열의 삽입 기능에 사용하기를 원합니다.

<asp:DynamicField DataField="COLUMN_NAME" UIHint="DropDown" ReadOnly="true" /> 

그것을에만이 페이지에서이 칼럼에 컨트롤을 적용,이 방법을 수행 : 따라서, 나는 다음과 같이이 열을 제어하는 ​​라인을 만들기 위해이 테이블 내 삽입 페이지를 변경. ReadOnly 값을 true로 설정해야합니다. 그렇지 않으면 드롭 다운이 아닌 텍스트 입력 필드로 렌더링됩니다.

거기에서 삽입 페이지에는 해당 열의 데이터 입력에 대한 드롭 다운이 있어야합니다.

이 하나의 열에 만 필요하기 때문에 데이터를 내 드롭 다운에 묶는 코드는이 하나의 열에서만 작동하도록 설정됩니다. 컨트롤을 묶은 열을 기반으로 특정 열의 모든 값을 조회하는 쿼리를 작성하거나 드롭 다운 목록이 필요한 각 열에 대해 자체 필드 템플릿을 만들어야 할 수도 있습니다 에 대한.

1

필터 컨트롤을 사용 했습니까?

FilterControl 속성은 사용자가 QueryableFilterRepeater에 의해 생성 된 Label을 선택할 때 포커스를 받아야하는 컨트롤을 반환합니다. Google의 날짜 필터에서는 드롭 다운 목록 또는 텍스트 상자가 될 수 있습니다.

어쩌면이 게시물이 도움이 될 것입니다 확인 : http://www.olegsych.com/2010/07/understanding-aspnet-dynamic-data-filter-templates/

+0

이게 어떻게 도움이되는지 모르겠습니다. 제공된 예제는 기존 테이블을 쿼리하여 나열된 테이블의 범위를 좁히는 데 사용됩니다. 필요한 것은 다른 테이블의 값으로 드롭 다운을 채울 수 있기 때문에 삽입 페이지로 새 항목을 작성하면 해당 열의 값을 다른 테이블의 값과 동일하게 설정합니다. – MattD

관련 문제