2008-08-22 10 views
4

편집보기 템플릿에 두 개의 드롭 다운이 있습니다. 드롭 다운 1은 허용 된 값 목록으로 명시 적으로 설정됩니다. 또한 autopostback으로 설정됩니다. 드롭 다운 2는 objectdatasource에 데이터 바인딩되며,이 objectdatasource는 첫 번째 드롭 다운을 매개 변수 중 하나로 사용합니다. (아이디어는 드롭 다운 1에서 드롭 다운 2에 표시된 내용을 제한한다는 것입니다.)Formview 드롭 다운 2는 드롭 다운 1에 따라 달라집니다.

항목에 대한 편집 템플리트의 첫 번째보기에서 제대로 작동합니다. 오류 다른 항목이 다시 남기 선택한 생성한다 다운 1 놓으면 그러나 그러한 평가() 의 XPath() 및 바인딩()로서

데이터 바인딩 방식 만의 컨텍스트에서 사용될 수있다 데이터 바인딩 된 컨트롤. 여기

목록 # 2 드롭 다운입니다 : 여기

<asp:DropDownList ID="ProjectList" runat="server" SelectedValue='<%# Bind("ConnectToProject_ID","{0:D}") %>' DataSourceID="MasterProjectsDataSource2" DataTextField="Name" DataValueField="ID" AppendDataBoundItems="true"> 
     <asp:ListItem Value="0" Text="{No Master Project}" Selected="True" /> 
</asp:DropDownList> 

그리고 MasterProjectDataSource2입니다 :

<asp:ObjectDataSource ID="MasterProjectsDataSource2" runat="server" 
      SelectMethod="GetMasterProjectList" TypeName="WebWorxData.Project" > 
      <SelectParameters> 
       <asp:ControlParameter ControlID="RPMTypeList" Name="RPMType_ID" 
        PropertyName="SelectedValue" Type="Int32" /> 
      </SelectParameters> 
     </asp:ObjectDataSource> 

이 작업을하는 방법에 어떤 도움이 크게 appriciated 될 것이다.

+0

문제를 해결 했습니까? 그렇지 않으면 내가 다르고 우아한 해결책을 제공 할 것입니다. –

답변

0

컨트롤과 같은 소리가 포스트 백 후에 제대로 데이터 바인딩되지 않습니다.

페이지 또는 코드 숨김의 첫 번째 드롭 다운을 데이터 바인딩합니까? 코드 숨김 인 경우 매번 on_init 또는 on_load에서 수행하고 있습니까?

두 번째 드롭 다운의 SelectedValue 문제가 포스트 백 이후에 존재하지 않는 항목으로 설정 될 수 있습니다.

0

두 번째 드롭 다운이 databound 컨트롤 (예 : Repeater)에 없다면 - SelectedValue를 바인딩하려는 대상을 잘 모르겠습니다. 분명히, 어느 쪽도 .NET이 아닙니다. 아마도 그 곳에서 오류가 발생하고 있기 때문입니다.

어디에서 왔는지 Connect_ToProjectId가 맞습니까?

3

FormView에서 바인드 된 드롭 다운 목록과 비슷한 문제가있었습니다. 나는 formview의 "OnDataBound"에서 수동으로 선택한 값을 설정하여이 문제를 해결했습니다.

(당신이에서 ConnectToProject_ID 어디서 모르는)

FormView fv = (FormView)sender; 
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList"); 
ddl.SelectedValue = String.Format("{0:D}", ConnectToProject_ID); 

준비가 저장되면 "OnItemInserting"이벤트를 사용

FormView fv = (FormView)sender; 
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList"); 
e.Values["ConnectToProject_ID"] = ddl.SelectedValue; 

또는 "OnItemUpdating"

저장 준비가되면 "OnItemInserting"이벤트를 사용하십시오.

FormView fv = (FormView)sender; 
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList"); 
e.NewValues["ConnectToProject_ID"] = ddl.SelectedValue;