2012-11-27 4 views
1

부모 노드를 기준으로 채워지는 여러 개의 드롭 다운 목록을 바인딩하는 방법이 필요합니다.ASP.NET에서 종속 드롭 다운 목록을 바인딩하는 방법

RootDDL <- child <- grandchild[]

코드는

<FormView DataSoureceID="rootDatasource"> 
    <DropDownList ID="RootDLL" AutoPostBack="true"> 
     <!--items--> 
    </DropDownList> 
    <DropDownList ID="child" AutoPostBack="true" DataSourceID="ChildDataSource" /> 
    <SqlDataSource ID="ChildDataSource" /> 

    <DropDownList ID="grandchild" DataSourceID="GrandChildDataSource" SelectedValue='<%# Bind('SomeFieldInRootDatasource') %>' /> 
    <SqlDataSource ID="GrandChildDataSource"> 
     <SelectParameters> 
      <ControlParameter ControlID="child" PropertyName="SelectedValue" /> 
     </SelectParameters> 
    </SqlDataSource> 
    <Button Command="Update" /> 
</FormView> 
<SqlDataSource ID="rootDatasource"> 
    <InsertParameters> 
     <asp:Parameter Name="SomeFieldInRootDatasource" /> 
    </InsertParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="SomeFieldInRootDatasource" /> 
    </UpdateParamters> 
</SqlDataSource> 

변경에 비슷한 보이는 rootDDL가 자식 selectedvalue이 바인딩을 시도 없지만 그것으로 FormView가 더 이상 역할을 할 수 <%# Bind %> 그랜드 아이를 변경 불행하게도 때, 작동 컨테이너로.

그것은 그러한 평가 (AS

데이터 바인딩 방식)의 XPath() 실패하고, 바인딩은()에만 바인딩 제어의 맥락에서 사용될 수있다.

이벤트 (다중) 처리기를 추가 할 필요가없는이 문제에 대한 해결책이 있습니까?

답변

0

각 어린이 dropdownlist에 대해 hiddenfield을 작성하여 필요한 값으로 바인딩했습니다. 나는 indexchange handler generic을 생성하여 hiddenfeild을 원하는 결과로 업데이트했다. 결과적으로 바운드 필드가 데이터 소스에 의해 업데이트되지 않습니다 (처음에는 문제를 일으키는 리 바인드 시스템 호출을 피하십시오).

이것이 최선의 해결책인지 확실하지는 않지만 대부분의 경우에 효과적입니다.

관련 문제