6

AutoPostBack を true に設定した ASP.Net RadioButtonList コントロールがあります。また、ユーザーが選択を変更するたびに呼び出される OnSelectedIndexChanged 関数もあります。最後に、ユーザーはこのコントロールに要求された情報を提供する必要があるため、ユーザーがページに到着したときのデフォルトの選択があります--

<asp:RadioButtonList ID="rblHighestDegree" runat="server" AutoPostBack="true"
        onselectedindexchanged="rblHighestDegree_SelectedIndexChanged">
   <asp:listitem Runat="server" Text="Master's Degree" Selected="True" />
   <asp:listitem Runat="server" Text="Doctorate" />
</asp:RadioButtonList>

上記のコード サンプルでは、​​ユーザーがデフォルトの選択 (「修士号」など) から別のオプション (「博士号」など) に切り替えると、SelectedIndexChanged イベントがトリガーされます。その後、ユーザーが考えを変えて元のデフォルト オプションを選択すると、SelectedIndexChanged イベントが再びトリガーされます。これは、意図したとおりに正確に機能します。

上記の選択に応じて、コード ビハインドで有効または無効にする 2 番目のコントロールがあります...

<asp:ScriptManager ID="scriptmanager1" runat="server" />
<asp:UpdatePanel ID="updatepanel1" runat="server">
<ContentTemplate>
<asp:RadioButtonList ID="rdlYearsOfStudy" runat="server" Enabled="false">
<asp:listitem Runat="server" Text="Less than 3 years" />
<asp:listitem Runat="server" Text="3 - 4 years" />
<asp:listitem Runat="server" Text="5 - 6 years" />
 </asp:RadioButtonList>
</ContentTemplate>
<Triggers>
  <asp:AsyncPostBackTrigger ControlID="rblHighestDegree" EventName="SelectedIndexChanged" /> 
</Triggers>
</asp:UpdatePanel>

私が抱えている問題は、この 2 番目のコントロールを ASP.Net AJAX UpdatePanel 内に配置して非同期ポストバックを有効にした後にのみ発生します (上記のように)。これを行うと、元の RadioButtonList コントロールは、ユーザーがページに到着したときにデフォルトで選択されていなかった ListItem を選択した場合にのみポストバックします。その後、ユーザーが元の既定の選択を選択した場合、ポストバックは発生しません。

明確にするために、該当する 2 番目のコントロールを ASP.Net AJAX UpdatePanel に配置せずにポストバックすると、ユーザーがどの RadioButtonList ListItem を選択しても、SelectedIndexChanged は機能します。一方、UpdatePanel 内にコントロールを配置して AsyncPostBackTrigger を適用すると、デフォルト以外の ListItem の選択に対してのみポストバックが発生します。

関連する可能性のある詳細情報は、Microsoft Visual Studio 2008 でコーディングしており、使用している UpdatePanel コントロールは Microsoft AJAX ライブラリ (ASP.NET AJAX コントロール ツールキットではありません) の一部です。

ユーザーがRadioButtonListでデフォルトまたはデフォルト以外のListItemsを選択したときにSelectedIndexChangedイベントを発生させることができるように、ASP.Net AJAXを動作させる方法についての洞察をいただければ幸いです。記録のために、page_load イベントで RadioButtonList のデフォルト選択を設定しようとしましたが、役に立ちませんでした。

事前にすべての助けに感謝します!

4

5 に答える 5

0

コード ビハインドでラジオ ボタン リストを作成し、SelectedIndex = 0 をオフにして、onload で JavaScript を使用して最初の項目の click() を呼び出しました。これは私のために働いた最も簡単なことです。

于 2014-07-31T22:59:41.223 に答える
0

これは古い質問だと思いますが、Jeff Shepler が言ったように、デフォルト オプションのクリック ハンドラはなく、部分的なポストバックでは作成されません。

最初の radiobuttonlist を UpdateModel="Always" (デフォルト) の新しい更新パネルにラップして、ポストバックによって更新されるようにすることで、これを回避しました。

特定のフォーム レイアウトが原因で、両方のラジオボタン リストを同じ更新パネルに配置するという解決策を使用できませんでした。

于 2016-08-24T12:58:18.430 に答える