0

ASP.NET CascadingDropDownコントロールを使用して、ユーザーが選択した値と回答をレンダリングしようとしています。最初の2つのドロップダウンには、ユーザーが最後にページにアクセスしたときに選択した回答が常に表示されます。また、新しい値を選択して保存することもでき、データベースに正しく保存されます。問題は、次にこのページにアクセスしてドロップダウン値を編集するときに、最初の2つはユーザーが選択した回答を正しく表示しますが、3つ目は表示しません)。

この3番目のドロップダウンを正しく表示するにはどうすればよいですか?デバッグ時に、選択した値がサーバーのGetTaxoメソッドに渡されていないように見えます。

リピーターを使用して、以下を含むカスタムコントロールを出力しています。

<asp:DropDownList id="cboResponse" DataTextField="lov_label" 
   DataValueField="lov_cd" EnableViewState="True" runat="server" />

<ajaxToolkit:CascadingDropDown ID="CDDL" runat="server" Category="-"
   EnableViewState="True" ServiceMethod="GetTaxo"
   ServicePath="/ajax/SaT.asmx" 
   TargetControlID="cboResponse" PromptValue="-1" PromptText="(Select One)" 
   LoadingText ="Loading..." />

コードビハインドで、カテゴリとCascadingDropDownのSelectedValueを設定しました。

CDDL.Category = questionId
CDDL.SelectedValue = cboResponse.SelectedValue

ページがレンダリングされるとき、SelectedValueが設定されているので問題はありません。Category = 5149のドロップダウンですが、SelectedValueをサーバーに渡していないようです。

Sys.Application.add_init(function() {
    $create(AjaxControlToolkit.CascadingDropDownBehavior, {"Category":"4548","ClientStateFieldID":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl03_ctl02_CDDL_ClientState","LoadingText":"Loading...","PromptText":"(Select One)","PromptValue":"-1","SelectedValue":"MyAnswer","ServiceMethod":"GetTaxo","ServicePath":"/ajax/SaT.asmx","id":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl03_ctl02_CDDL"}, null, null, $get("ucInvEdit_ucQuestionRepeater_rptQuestions_ctl03_ctl02_cboResponse"));
});

document.getElementById('ucInvEdit_ucQuestionRepeater_rptQuestions_ctl03_ctl02_valSelectionRequired').dispose = function() {
    Array.remove(Page_Validators, document.getElementById('ucInvEdit_ucQuestionRepeater_rptQuestions_ctl03_ctl02_valSelectionRequired'));
}
Sys.Application.add_init(function() {
    $create(AjaxControlToolkit.CascadingDropDownBehavior, {"Category":"4025","ClientStateFieldID":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl04_ctl02_CDDL_ClientState","LoadingText":"Loading...","ParentControlID":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl03_ctl02_cboResponse","PromptText":"(Select One)","PromptValue":"-1","SelectedValue":"MyAnswer2","ServiceMethod":"GetTaxo","ServicePath":"/ajax/SaT.asmx","id":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl04_ctl02_CDDL"}, null, null, $get("ucInvEdit_ucQuestionRepeater_rptQuestions_ctl04_ctl02_cboResponse"));
});

document.getElementById('ucInvEdit_ucQuestionRepeater_rptQuestions_ctl04_ctl02_valSelectionRequired').dispose = function() {
    Array.remove(Page_Validators, document.getElementById('ucInvEdit_ucQuestionRepeater_rptQuestions_ctl04_ctl02_valSelectionRequired'));
}
Sys.Application.add_init(function() {
    $create(AjaxControlToolkit.CascadingDropDownBehavior, {"Category":"5149","ClientStateFieldID":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl05_ctl02_CDDL_ClientState","LoadingText":"Loading...","ParentControlID":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl04_ctl02_cboResponse","PromptText":"(Select One)","PromptValue":"-1","SelectedValue":"MyAnswer3","ServiceMethod":"GetTaxo","ServicePath":"/ajax/SaT.asmx","id":"ucInvEdit_ucQuestionRepeater_rptQuestions_ctl05_ctl02_CDDL"}, null, null, $get("ucInvEdit_ucQuestionRepeater_rptQuestions_ctl05_ctl02_cboResponse"));
});

document.getElementById('ucInvEdit_ucQuestionRepeater_rptQuestions_ctl05_ctl02_valSelectionRequired').dispose = function() {
    Array.remove(Page_Validators, document.getElementById('ucInvEdit_ucQuestionRepeater_rptQuestions_ctl05_ctl02_valSelectionRequired'));
}
4

1 に答える 1

0

ContextKey 属性を使用して回答をサーバーに渡すことになりました。knownCategoryValue の目的を複製していますが、このコントロールは不安定であり、それを実行する必要があったため、contextKey を使用して正しい答えを選択することになりました。

于 2012-10-12T20:18:22.193 に答える