2012-05-03 13 views
11

私のASP.NETプロジェクトで。私は2つのドロップダウンリストとチェックボックスを持っています。このチェックボックスをオンにすると、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選択された値と同じでなければなりません。

+0

ddlcSCountry.SelectedIndex = ddlcSCountry.Items.IndexOf(ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value)) – Nalaka526

+0

あなたは上の展開することができます** **(あなたが投稿するので明らかに)動作していない、あなたはどんなエラーが出るのですか?腐ったドロップダウンですか? – V4Vendetta

+0

私は何かエラーが発生します。ドロップダウンリストに応答がありません – user998405

答えて

18

ここで、これらのドロップダウンリストコントロールにデータをバインドしますか?それらは次のようにページの最初の読み込み時にのみバインドする必要があります。私はあなたがすべてのページの読み込みでそれらをバインドしていると思われるので、選択した値が消えます。

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 hould両方が選択できるように同一の値を有することです。そうでない場合ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value)はnullになり、Selectedプロパティを設定しようとするとエラーがスローされます

上記の両方の条件が満たされていれば、コードは機能します。

EDIT申し訳ありませんが、私のコメントは、チェックボックスではなくドロップダウンリストコントロールのバインディングをチェックすることです。

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

CheckedChanged event以内にあなたのif (this.chkSameBAddress.Checked == true)行にブレークポイントを入れて、それが実行されている参照して、実行時の値...

+0

こんにちは。エンティティデータソースを使用してドロップダウンリストをバインドします。 – user998405

+0

上記のようにブレークポイントを設定し、ランタイム値をチェックすることができます。あなたのコードに間違いはありませんが、問題はあなたがそれをした順序であると思われます。あなたの 'chkSameBAddress_CheckedChanged'イベントはまったく起動していますか? – Kaf

+0

ya。私はchkSameBAddress_CheckedChangedの中にブレークポイントを入れてみます。 CheckedChangedイベントが発生しました – user998405

0

それは必要なアイテム

+0

こんにちはddlcSCountry.textはありません.ddlcSCountry.SelectedItem.textですか? – user998405

+0

から上部の文字 "テキスト" – Likurg

+0

@ user998405私は – Likurg

0

を選択します選択

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value; 

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

+0

を編集します。私はすでにtrueに設定されています – user998405

2

もちろん、ドロップダウンボックスを同じにしようとしていますか?

使用

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

これは、リスト内の一致するオプションを選択して、ちょうどあなたがあなたのテキストオプションを持つ根本的な価値を持っているときに、非常に有用である、フィールドにテキストを設定しません。

0

は必ずAutoPostBackのは、のプロパティにtrueに設定されて持っていることを確認しますように、それはする必要がありますDropDownList

2

最も一般的な原因は明らかに解決されていますが、これを引き起こす驚くべき問題がもう1つあります。

私のリストの値はデータベースから来ており、値には、データベース値からの改行と改行が含まれていました:\r\n。これらの値は無実の空間のように見えますが、実際にはそうではありません!

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

関連する問題