11

私のASP.NETプロジェクトで。2つのドロップダウンリストと1つのチェックボックスがあります。チェックボックスがオンになっている場合、の選択された値は、の選択された値DropDownList1と同じである必要がありますDropDownList2。しかし、DropDownList1.SelectedValueは機能していません。

これが私のコードです:

protected void chkSameBAddress_CheckedChanged(object sender, EventArgs e)
{
    try
    {
        if (this.chkSameBAddress.Checked == true)
        {

          this.txtcSAddress1.Text=  this.txtcBAddress1.Text;
          this.txtcSAddress2.Text = this.txtcBAddress2.Text;
          this.txtcSAddress3.Text = this.txtcBAddress3.Text;
          this.txtcSAddress4.Text = this.txtcBAddress4.Text;
          this.txtcSCity.Text = this.txtcBCity.Text;
          this.txtcSPostCode.Text = this.txtcBPostCode.Text;
          this.txtcSState.Text = this.txtcBState.Text;

          this.ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value).Selected = true;


        }

    }
    catch (Exception ex)
    {
        logger.Error(ex.Message);
        throw;

    }
}

上記の例に見られるように、chkSmaeBAddressがチェックされている場合、ddlcSCountryの選択された値は、ddlcBCountry選択された値と同じである必要があります。

4

7 に答える 7

19

これらのドロップダウンリストコントロールのどこにデータをバインドしていますか?次のように、ページの初期読み込み時にのみバインドする必要があります。ページを読み込むたびにバインドしているため、選択した値が表示されなくなっていると思われます。

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
        //Please check if you are binding checkbox controls here. 
        //If not bring them in here
    }
}

他の条件は、ddlcSCountryとddlcBCountryの両方が選択できるように同じ値を持っている必要があるということです。それ以外の場合ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value)はnullになり、Selectedプロパティを設定しようとするとエラーがスローされます

上記の両方の条件に問題がなければ、コードは機能するはずです。

編集申し訳ありませんが、私のコメントコードは、チェックボックスではなく、ドロップダウンリストコントロールのバインドをチェックすることです。だからそれは

//Please check if you are binding both dropdown list controls here. 
//If not bind them within the if (!Page.IsPostBack)

if (this.chkSameBAddress.Checked == true)内の行にブレークポイントを設定し、CheckedChanged event実行されていることを確認してから、実行時の値を確認します。

于 2012-05-03T11:52:46.853 に答える
3

受け入れられた解決策は、最も一般的な原因に対する明白な解決策ですが、これを引き起こす可能性のあるもう1つの驚くべき問題があります!

私のリスト値はデータベースからのものであり、値にはデータベース値からの改行とキャリッジリターンがありました\r\n。これらの値は無実の空間のように見えますが、実際にはそうではありません。

私の解決策は、これらの隠されたChar値を削除することでした。それが役に立てば幸い。

于 2015-04-01T03:57:19.773 に答える
2

確かにあなたはドロップダウンボックスを等しくしようとしていますか?

使用する

ddlcSCountry.SelectedIndex = ddlcSCountry.FindStringExact(ddlcBCountry.Text);

これにより、フィールドにテキストを設定するだけでなく、リスト内の一致するオプションが選択されます。これは、テキストオプションに基になる値がある場合に非常に便利です。

于 2012-05-03T10:30:58.643 に答える
0

選択のためにこれを試してください

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value;

必要なアイテムを選択します

于 2012-05-03T10:20:04.490 に答える
0

chkSameBAddress.AutoPostBackそれがtrueに設定されていることを確認してください。設定しても機能しない場合は、UpdatePanelコントロールを使用するか、JavaScriptを使用してそのロジックをクライアントに移動することを検討してください。

于 2012-05-03T10:30:12.733 に答える
0

DropDownListのプロパティでAutoPostBackがtrueに設定されていることを確認してください。

于 2014-08-18T22:53:51.120 に答える
0

使用に切り替える<select runat="server" id="test1"></Select> だけで、コードの背後にあるわずかな変更を加えるだけで、すべてがうまく機能しました。

于 2019-06-22T02:12:42.057 に答える