WebフォームにRadioButtonListがあります。選択したアイテムを設定するために、2つの異なる方法を試しました。マークアップと、Page_Loadイベントのようなコードで試しました。正しく設定して表示します。私の問題は、選択したラジオボタンがSelectedIndexChangedイベントに応答しなくなったことです。他のアイテムは期待どおりに機能し、selectedItemを設定するコードを削除すると、ラジオボタンは期待どおりに機能します。コードを使用してラジオボタンを設定する方法はありますか?それでも期待どおりに動作します。ボタンを強制的に選択しても、変更されないのではないかと思います。誰かがこれを修正する方法を知っているので、デフォルトで選択できますが、それでも私が望むように動作しますか?
<asp:RadioButtonList ID="rblPaymentType" runat="server" AutoPostBack="True" RepeatDirection="Horizontal"
RepeatLayout="Flow">
<asp:ListItem Value="benefit" Text="Benefit" Selected="True"/>
<asp:ListItem Value="expense" Text="Expense" />
</asp:RadioButtonList>
これは私がイベントを持っているascxの中に住んでいます
public delegate void SwitchBenefitTypeHandler(object sender, EventArgs e);
public event SwitchBenefitTypeHandler SwitchedBenefit;
protected void Page_Load(object sender, EventArgs e)
{
WireEvents();
}
private void WireEvents()
{
rblPaymentType.SelectedIndexChanged += (sender, args) => SwitchedBenefit(sender, args);
}
次に、aspxで、ハンドラー関数をそのイベントに接続します。
if (header is PaymentHeader)
(header as PaymentHeader).SwitchedBenefit += (paymentForm as PaymentBaseControl).Update;
最後にハンドラー関数
public override void Update(object sender, EventArgs e)
{
if (sender is RadioButtonList)
{
IsExpense = (sender as RadioButtonList).SelectedValue == "expense";
UpdateCalcFlag();
UpdateDropDownDataSources();
UpdatePaymentTypeDropDown();
ResetBenefitLabels();
FormatAmountTextBox();
}
}
それで十分なコードだといいのですが。RadioButtonListにSelectedItemを設定しない場合はすべてうまく機能しますが、設定する必要があります。
同じ問題を抱えている人へのリンクは次のとおりです。ASP.NETAJAX関連です。ここをクリック ありがとう、サンディエゴで〜ck