2012-05-03 29 views
11

Trong dự án ASP.NET của tôi. Tôi có hai danh sách thả xuống và một hộp kiểm. Khi hộp kiểm được chọn, giá trị được chọn là DropDownList1 phải giống với giá trị được chọn của DropDownList2. Nhưng DropDownList1.SelectedValue không hoạt động.Danh sách thả xuống giá trị đã chọn không hoạt động

Đây là mã của tôi:

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; 

    } 
} 

Như đã thấy trong ví dụ trên, nếu chkSmaeBAddress được kiểm tra thì giá trị được lựa chọn của ddlcSCountry phải giống như ddlcBCountry giá trị được chọn.

+0

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

+0

Bạn có thể mở rộng trên ** Không hoạt động ** (hiển nhiên khi bạn đăng), bạn có gặp lỗi gì không? là thả xuống poulated? – V4Vendetta

+0

i dint gặp bất kỳ lỗi nào. danh sách thả xuống không nhận được phản hồi – user998405

Trả lời

18

Bạn đang liên kết dữ liệu với các kiểm soát danh sách thả xuống này ở đâu? Chúng chỉ bị ràng buộc trong lần tải trang đầu tiên như sau. Tôi nghi ngờ rằng bạn đang ràng buộc chúng trong mỗi tải trang và do đó các giá trị được chọn biến mất.

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 
    } 
} 

Điều kiện khác là cả ddlcSCountry và ddlcBCountry đều có cùng giá trị để có thể chọn. Nếu không, ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value) sẽ không có giá trị và sẽ phát ra lỗi khi cố gắng đặt thuộc tính Đã chọn

Nếu cả hai điều kiện trên đều ổn, mã của bạn sẽ hoạt động.

EDIT Xin lỗi, mã nhận xét của tôi nên kiểm tra ràng buộc của các điều khiển danh sách thả xuống chứ không phải hộp kiểm. vì thế nên càng

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

Đặt một breakpoint trong dòng if (this.chkSameBAddress.Checked == true) của bạn trong vòng CheckedChanged event và nhìn thấy nó được thực hiện và sau đó các giá trị thời gian chạy ...

+0

Xin chào. i ràng buộc danh sách thả xuống bằng cách sử dụng nguồn dữ liệu thực thể – user998405

+0

Bạn có thể đặt điểm ngắt như tôi đã nói ở trên và kiểm tra giá trị thời gian chạy. Không có gì sai với mã của bạn nhưng tôi nghi ngờ vấn đề là thứ tự mà bạn đã làm nó. Sự kiện 'chkSameBAddress_CheckedChanged' của bạn có được kích hoạt không? – Kaf

+0

ya. tôi thử đặt một điểm break trong chkSameBAddress_CheckedThay đổi. Sự kiện CheckedChanged được kích hoạt – user998405

0

Hãy thử điều này cho chọn

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value; 

Nó sẽ được lựa chọn cần thiết mục

+0

hi không có ddlcSCountry.text .Is it ddlcSCountry.SelectedItem.text? – user998405

+0

từ chữ Upper "Văn bản" – Likurg

+0

@ user998405 tôi chỉnh sửa – Likurg

0

Hãy chắc chắn rằng chkSameBAddress.AutoPostBack được thiết lập là true. Nếu nó được đặt và vẫn không hoạt động, hãy xem xét sử dụng điều khiển UpdatePanel hoặc di chuyển logic đó cho khách hàng bằng JavaScript.

+0

ya. tôi đặt thành true rồi – user998405

2

Chắc chắn bạn đang cố gắng tạo các hộp thả xuống bằng nhau?

sử dụng

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

này sẽ chọn tùy chọn tương ứng trong danh sách và không chỉ thiết lập các văn bản trong lĩnh vực, mà là rất hữu ích khi bạn có giá trị tiềm ẩn với các tùy chọn văn bản của bạn.

0

Đảm bảo bạn có AutoPostBack thiết lập là true trong các thuộc tính của DropDownList.

2

Giải pháp được chấp nhận là giải pháp rõ ràng cho nguyên nhân phổ biến nhất, tuy nhiên, có một vấn đề đáng ngạc nhiên hơn có thể gây ra điều này!

Giá trị danh sách của tôi đến từ cơ sở dữ liệu và các giá trị có dòng trả về và giá trị vận chuyển từ giá trị cơ sở dữ liệu: \r\n. Những giá trị này trông giống như một không gian vô tội, nhưng thực ra chúng không phải!

Giải pháp của tôi là xóa các giá trị Char ẩn này. Hy vọng nó giúp.

Các vấn đề liên quan