私のフォームに2つのDropDownList
コントロールがあります。そのうちの2番目のものは、その最初のSelectedValue
をバインディングパラメーターの1つとして使用しています。テンプレートコントロールのカスケードDropDownListバインディングの実装
DropDownList
のコントロールは両方とも、バインディング式を使用してFormView
のデータソースに結合されたSelectedValue
プロパティを持つFormView.InsertItemTemplate
のプロパティにあります。
初めてFormView
が挿入モードでレンダリングされると、すべて正常に動作します。問題は、最初のDropDownList
からAutoPostBack
の後にあり、FormView
は(再)バインドされませんが、2番目のDropDownList
のControlParameter
が変更されているため、バインドされていますが、
のSystem.InvalidOperationException:そのような評価などのデータバインディングメソッド()、 のXPath()、およびバインド()は、文脈で使用することができる
FormView
は、そのパスに結合されていないので、第二のDDLは、私が想定しますデータバス の制御の。ここで
マークアップです:
<InsertItemTemplate>
.
.
.
<tr class="GridViewRowB">
<td class="GridViewCell">
Offense Type
</td>
<td class="GridViewCell">
<asp:DropDownList ID="ddlOffenseType" runat="server" DataSourceID="dsOffenseType"
AutoPostBack="true" DataValueField="OffenseTypeID" DataTextField="Description"
SelectedValue='<%# Bind("OffenseTypeID") %>'>
</asp:DropDownList>
<asp:ObjectDataSource ID="dsOffenseType" runat="server" TypeName="OffenseType"
SelectMethod="GetAll">
<SelectParameters>
<asp:Parameter Name="ActiveOnly" DefaultValue="True" Type="Boolean" />
</SelectParameters>
</asp:ObjectDataSource>
</td>
</tr>
<tr class="GridViewRowA">
<td class="GridViewCell">
Attorney
</td>
<td class="GridViewCell">
<asp:DropDownList ID="ddlAttorney" runat="server" DataSourceID="dsAttorney" DataValueField="AttorneyID"
DataTextField="AttorneyNameWithCount" SelectedValue='<%# Bind("AttorneyID") %>'>
</asp:DropDownList>
<asp:ObjectDataSource ID="dsAttorney" runat="server" TypeName="Attorney"
SelectMethod="GetAttorneyWithCaseCount">
<SelectParameters>
<asp:Parameter Name="ActiveOnly" DefaultValue="True" Type="Boolean" />
<asp:ControlParameter Name="OffenseTypeID" Type="Int32" ControlID="ddlOffenseType"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:ObjectDataSource>
</td>
</tr>
.
.
.
</InsertItemTemplate>
私の質問は:この機能を動作させるための最善の方法は何ですか?両方のDDLをテンプレートの中に入れることは可能ですか?私は、AJAXツールキットや他のクライアントサイドのソリューションを使用することを避けたいと考えています。
OKそう....その後、私は 'FormViewコントロールを処理する必要があります.ItemInserting'を実行し、手動でパラメータを追加しますか? 'Edit'モードでの同じ問題はどうですか?初期値と更新値の両方を手動で処理しますか?後世のためのコードの例は高く評価されます。 – pseudocoder
yah、正確に。あなたは編集のために同じことをしなくてはなりません。 –
このソリューションが動作することを確認しました。ありがとう!私はこれに似たアイデアをいくつか持っていましたが、ほとんどの人がどのように問題に近づいているかは分かりません – pseudocoder