2012-05-03 8 views
11

내 ASP.NET 프로젝트에서. 두 개의 드롭 다운 목록과 체크 박스가 있습니다. 이 확인란을 선택하면 DropDownList1의 값은 DropDownList2의 selcted 값과 같아야합니다. 그러나 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은 ddlcBCountry 선택된 값으로 다음 ddlcSCountry가 동일해야 의 선택된 값을 확인한다 경우 :

여기에 내 코드이다.

+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 eventif (this.chkSameBAddress.Checked == true) 줄에 중단 점을 넣고 그것을 실행 참조하고 런타임 값 ...

+0

안녕하세요. 엔티티 데이터 소스를 사용하여 드롭 다운 목록을 바인딩합니다. – user998405

+0

위에서 말했듯이 중단 점을 넣고 런타임 값을 확인할 수 있습니다. 코드에 아무 문제가 없지만 문제는 사용자가 수행 한 순서와 관련이 있다고 생각합니다. 'chkSameBAddress_CheckedChanged' 이벤트가 전혀 실행되지 않습니까? – Kaf

+0

예. chkSameBAddress_CheckedChanged 안에 중단 점을 넣으려고합니다. CheckedChanged 이벤트가 발생했습니다 – user998405

0

은 선택

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value; 

이 선택됩니다

+0

안녕하세요 ddlcSCountry.text가 없습니다 .ddlcSCountry.SelectedItem.text입니까? – user998405

+0

위의 문자 "텍스트" – Likurg

+0

@ user998405 나는 – Likurg

0

chkSameBAddress.AutoPostBack가 true로 설정되어 있는지 확인하는 것이 필요 항목에 대한이보십시오. 설정되어 있지만 여전히 작동하지 않는 경우 UpdatePanel 컨트롤을 사용하거나 자바 스크립트를 사용하여 해당 로직을 클라이언트로 이동하십시오.

+0

을 편집합니다. 나는 이미 사실로 설정했습니다 – user998405

2

확실히 드롭 다운 상자를 동일하게 만들려고합니까?

사용

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

이 목록에서 일치하는 옵션을 선택하고 당신이 당신의 텍스트 옵션을 기본 값을 가질 때 매우 유용 분야의 텍스트를 설정하지 않습니다.

0

는 당신이 AutoPostBack을이의 속성을 true로 설정되어 있는지 확인으로 그래서해야 DropDownList.

2

허용되는 솔루션은 가장 일반적인 원인에 대한 명백한 해결책이지만,이 문제를 일으킬 수있는 또 다른 놀라운 문제가 있습니다.

내 목록 값은 데이터베이스에서 가져온 값이며, 데이터베이스 값에서 줄 바꿈 및 캐리지 리턴이 있습니다 (\r\n). 이 값들은 무고한 공간처럼 보이지만 실제로는 그렇지 않습니다!

내 솔루션은 이러한 숨겨진 Char 값을 제거하는 것이 었습니다. 희망이 도움이됩니다.