私の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選択された値と同じでなければなりません。
これらのドロップダウンリストコントロールのどこにデータをバインドしますか?次のように、これらはページの初期読み込み時にのみバインドされます。すべてのページの読み込みでそれらをバインドしているため、選択した値が表示されなくなると思います。
_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プロパティを設定しようとするとエラーがスローされます
上記の条件が両方とも問題なければ、コードは機能するはずです。
[〜#〜] 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)
行にブレークポイントを配置し、それが実行されていることを確認してから、ランタイム値...
確かにあなたはドロップダウンボックスを等しくしようとしていますか?
使用する
ddlcSCountry.SelectedIndex = ddlcSCountry.FindStringExact(ddlcBCountry.Text);
これにより、フィールド内のテキストを設定するだけでなく、リスト内の一致するオプションが選択されます。これは、テキストオプションに基礎となる値がある場合に非常に役立ちます。
受け入れられた解決策は、最も一般的な原因に対する明白な解決策ですが、これを引き起こす可能性のあるもう1つの驚くべき問題があります!
リストの値はデータベースから取得され、値にはデータベース値からの改行とキャリッジリターンが含まれていました:\r\n
。これらの値は無害なスペースのように見えますが、実際にはそうではありません!
私の解決策は、これらの隠されたChar値を削除することでした。それが役に立てば幸い。
DropDownListのプロパティでAutoPostBackがtrueに設定されていることを確認してください。
chkSameBAddress.AutoPostBack
はtrueに設定されています。それが設定されていても機能しない場合は、 pdatePanel コントロールを使用するか、JavaScriptを使用してそのロジックをクライアントに移動することを検討してください。
<select runat="server" id="test1"></Select>
を使用するように切り替えるだけで、コードの背後にあるわずかな変更を加えるだけで、すべてがうまく機能しました。
選択してみてください
ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value;
必要なアイテムを選択します