2008-08-22 9 views
4

私はフォームビューを持っていますが、編集テンプレートには2つのドロップダウンがあります。 ドロップダウン1は、許可された値のリストで明示的に設定されます。自動ポストバックにも設定されています。 ドロップダウン2はオブジェクトデータソースにデータバインドされます。このオブジェクトデータソースは、最初のドロップダウンをそのパラメータの1つとして使用します。 (アイデアはドロップダウン1がドロップダウン2に表示されているものを制限するということです)Formview Dropdown 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で実行していますか?

2番目のドロップダウンのSelectedValueが、ポストバック後に存在しない項目に設定されているという問題がある可能性があります。

0

2番目のドロップダウンがデータバインドされたコントロール(Repeaterなど)にない限り、SelectedValueをバインドしようとしているかどうかわかりません。明らかに、どちらも.NETです - それはおそらくエラーが発生している場所です。

Connect_ToProjectIdはどこから来たと思いますか?

3

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; 
関連する問題