2011-07-07 9 views
6

Tôi có một trang aspx nơi tôi tự động thêm một danh sách vô tuyến với sự kiện OnSelectedIndexChanged. Trong trường hợp tôi kiểm tra các mục đã chọn. tôi có 2 mặt hàng.RadioButtonList: OnSelectedIndexChanged không bắn

Đối với mục đầu tiên, sự kiện này được bắn tốt, Tuy nhiên nếu tôi chọn tùy chọn khác sự kiện này không được bắn: dưới mã ..

Sự kiện này được chỉ bắn là tôi thay đổi từ "Một số cung cấp" "All cung cấp" theo cách khác nó không phải đang làm việc

Thêm RBL:

   RadioButtonList dControl_b = new RadioButtonList(); 
       dControl_b.ID = "rbl_MinCriteria"; 
       dControl_b.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal; 
       dControl_b.CssClass = "Font"; 
       dControl_b.Font.Name = "Arial"; 
       dControl_b.Font.Size = 8; 
       dControl_b.ToolTip = ""; 
       dControl_b.SelectedIndex = -1; 
       dControl_b.SelectedIndexChanged += new EventHandler(rbl_MinCriteria_SelectedIndexChanged); 
       dControl_b.AutoPostBack = true; 

Kiểm tra mục đã chọn:

if(rbl_MinCriteria.SelectedItem.ToString() == "All provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = true; 
     cbl_MinimumCriteria.Items[1].Selected = true; 
     cbl_MinimumCriteria.Items[2].Selected = true; 
     cbl_MinimumCriteria.Items[3].Selected = true; 
     cbl_MinimumCriteria.Enabled = false; 

     //************************************************************* 
     if (ddl_CountryOccurence.SelectedValue != "Please choose") 
     { 
      ddl_CountryOccurence.Enabled = false; 
     } 
     else 
     { 
      ddl_CountryOccurence.Enabled = true; 
     } 

     //************************************************************* 
     if (tb_DueDate.Text != "") 
     { 
      tb_DueDate.Enabled = false; 
     } 
     else 
     { 
      tb_DueDate.Enabled = true; 
     } 

     OtherControlI.Enabled = false; 
     OtherControlII.Enabled = false; 
     OtherControlIII.Enabled = false; 
    } 
    if (rbl_MinCriteria.SelectedItem.ToString() == "Some provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = false; 
     cbl_MinimumCriteria.Items[1].Selected = false; 
     cbl_MinimumCriteria.Items[2].Selected = false; 
     cbl_MinimumCriteria.Items[3].Selected = false; 
     cbl_MinimumCriteria.Enabled = true; 

     //************************************************************* 
     if (ddl_CountryOccurence.SelectedValue != "Please choose") 
     { 
      ddl_CountryOccurence.Enabled = false; 
     } 
     else 
     { 
      ddl_CountryOccurence.Enabled = true; 
     } 

     //************************************************************* 
     if (tb_DueDate.Text != "") 
     { 
      tb_DueDate.Enabled = false; 
     } 
     else 
     { 
      tb_DueDate.Enabled = true; 
     } 

     OtherControlI.Enabled = false; 
     OtherControlI.SelectedIndex = -1; 
     OtherControlII.Enabled = false; 
     OtherControlII.SelectedIndex = -1; 
     OtherControlIII.Enabled = false; 
     OtherControlIII.SelectedIndex = -1; 
    } 

Bất kỳ sự giúp đỡ và Comment được nhiều đánh giá

+1

Tôi nghi ngờ rằng bạn đang bổ sung thêm tùy chọn của bạn để RadioButtonList với cùng giá trị. Bạn có thể gửi mã để thêm các mục vào RadioButtonList không. –

+0

Xem câu trả lời của tôi bên dưới.Tôi đã thêm nó một chút trễ nhưng kết quả này là cao trong Google để figured nó sẽ giúp đỡ. – trgraglia

Trả lời

1

Tôi đã thực hiện một trang mẫu aspx, và thêm vào một bảng trong .aspx như dưới đây:

<asp:Panel ID="Panel1" runat="server"></asp:Panel> 

Và trong mã đằng sau, tôi đã thêm đoạn mã sau :

protected void Page_Load(object sender, EventArgs e) 
    { 
     RadioButtonList dControl_b = new RadioButtonList(); 
     dControl_b.ID = "rbl_MinCriteria"; 
     dControl_b.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal; 
     dControl_b.CssClass = "Font"; 
     dControl_b.Font.Name = "Arial"; 
     dControl_b.Font.Size = 8; 
     dControl_b.ToolTip = ""; 
     dControl_b.SelectedIndex = -1; 
     dControl_b.SelectedIndexChanged += new   EventHandler(rbl_MinCriteria_SelectedIndexChanged); 
     dControl_b.AutoPostBack = true; 

     dControl_b.Items.Add(new ListItem("All provided")); 
     dControl_b.Items.Add(new ListItem("Some provided")); 

     Panel1.Controls.Add(dControl_b); 
    } 
    protected void rbl_MinCriteria_SelectedIndexChanged(object sender,EventArgs e) 
    { 
     RadioButtonList rbl_MinCriteria = (RadioButtonList)Panel1.FindControl("rbl_MinCriteria"); 
     if(rbl_MinCriteria.SelectedItem.ToString() == "All provided") 
     { 

     } 
     if (rbl_MinCriteria.SelectedItem.ToString() == "Some provided") 
     { 

     } 

    } 

Sự kiện là L FIRI THỜI GIAN nút radio listitem được thay đổi.

Vì vậy, tôi sợ, bạn đã làm điều gì đó sai ở nơi khác. Chúc may mắn.

+0

Hi Bikash, sự khác biệt duy nhất giữa mã của bạn và ist của tôi mà tôi tạo ra sự kiểm soát trong một chức năng riêng biệt. Nhưng chức năng này cũng được gọi trong sự kiện tải trang. Những gì tôi chỉ đơn giản là không hiểu lý do tại sao sự kiện này được kích hoạt nếu tôi chọn "tất cả được cung cấp" nhưng không nếu tôi chọn "một số được cung cấp" sự kiện được corelated để kiểm soát, và không để các mục được chọn – Yann

+0

Hi Yann, có bạn chạy mã của tôi ? Nếu không, hãy thử bằng cách tạo một trang web mới. Chỉ cần dán mã của tôi ở phía sau mã, đặt các điểm ngắt trong mỗi câu lệnh if và xem nó có xuất hiện ở đó hay không. Tôi chắc chắn nó sẽ tấn công trong mọi vụ cháy. Bằng cách này bạn sẽ thấy rằng vấn đề nằm ở nơi khác. Sau đó, thêm đoạn mã khác và thử lại. Hoặc gửi cho tôi mã của bạn. – Bikee

1

Nhìn vào mã ở trên dường như có rất nhiều việc sử dụng lại mã. Tôi tổ chức lại mã của bạn một chút (giả sử bạn không để lại bất kỳ điều gì). Hãy nhớ rằng tôi chưa bao giờ thử nghiệm nó.

protected void rbl_MinCriteria_SelectedIndexChanged(object sender,EventArgs e) 
{ 
    if (rbl_MinCriteria.SelectedIndex<0) return; //If nothing is selected then do nothing 

     OtherControlI.Enabled = false; 
     OtherControlII.Enabled = false; 
     OtherControlIII.Enabled = false; 
    if(rbl_MinCriteria.SelectedItem.ToString() == "All provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = true; 
     cbl_MinimumCriteria.Items[1].Selected = true; 
     cbl_MinimumCriteria.Items[2].Selected = true; 
     cbl_MinimumCriteria.Items[3].Selected = true; 
     cbl_MinimumCriteria.Enabled = false; 

    } 
    if (rbl_MinCriteria.SelectedItem.ToString() == "Some provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = false; 
     cbl_MinimumCriteria.Items[1].Selected = false; 
     cbl_MinimumCriteria.Items[2].Selected = false; 
     cbl_MinimumCriteria.Items[3].Selected = false; 
     cbl_MinimumCriteria.Enabled = true; 

     OtherControlI.SelectedIndex = -1; 
     OtherControlII.SelectedIndex = -1; 
     OtherControlIII.SelectedIndex = -1; 
    } 

    //************************************************************* 
    if (ddl_CountryOccurence.SelectedValue != "Please choose") 
    { 
     ddl_CountryOccurence.Enabled = false; 
    } 
    else 
    { 
     ddl_CountryOccurence.Enabled = true; 
    } 
    //************************************************************* 
    if (tb_DueDate.Text != "") 
    { 
    tb_DueDate.Enabled = false; 
    } 
    else 
    { 
     tb_DueDate.Enabled = true; 
    } 
} 

Tôi biết điều này không giúp được vấn đề hiện tại của bạn nhưng đây chỉ là gợi ý. Nếu bạn có thể đăng mã nơi bạn thực sự thêm các giá trị vào danh sách, tôi có thể giúp thêm một chút.

CHỈNH SỬA: Vấn đề của bạn có thể là bạn không đặt giá trị cho các mục của mình, chỉ văn bản. Hãy thử sử dụng rbl_MinCriteria.SelectedItem.Text =="All provided" để thay thế.

+0

Tôi liên tục thêm giá trị vào các mục danh sách. Nhưng nó vẫn không hoạt động! Tôi cũng bắt đầu hoàn toàn từ đầu, đã xóa mã để tạo danh sách và đã viết nó ngay từ đầu. Vẫn còn vấn đề tương tự – Yann

+0

@Yann, Bạn đã thử sử dụng SelectedItem.Text chưa? Bạn đang thêm các mục vào danh sách như thế nào? Bạn có thể gửi mã không? – Gage

+0

đây là cách tôi thêm các mục: ListItem a = new ListItem(); a.Value = "Tất cả được cung cấp"; a.Text = "Tất cả được cung cấp"; ListItem b = new ListItem(); b.Value = "Một số được cung cấp"; b.Text = "Một số được cung cấp"; Và tôi đã thử cả hai, SelectedItems AND selectedValue dControl_b.Items.Add (a); dControl_b.Items.Add (b); – Yann

2

Tôi có vấn đề này và giải quyết nó.

Đối với huy động sự kiện OnSelectedIndexChanged của RadioButtonList, kiểm tra bên dưới mục:

 <asp:RadioButtonList ID="rdlCondition" runat="server" AutoPostBack="True" 
     onselectedindexchanged="rdlCondition_SelectedIndexChanged"> 

và trong Page_Load thiết lập chúng với mã:

 rdlCondition.AutoPostBack = true; 
    rdlCondition.SelectedIndexChanged += new EventHandler (rdlCondition_SelectedIndexChanged);