0

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

4

1 に答える 1

3

これを試して:

radiobutton.Items.FindByText("VALUE").Selected = true;
于 2011-12-20T22:18:30.247 に答える