Uncheched RadioButtonList Doesn't Fire SelectedIndexChanged?
Apr 4, 2011
I have a RadioButtonList with some fixed element and a default selected. If I uncheck the selection with javascript, on postback the SelectedIndexChanged event is not fired.
I would expect that the SelectedIndexChanged is called because the index is changed to -1.
As far as I know, the stage of data collection from the submit of the form is handled by IPostBackDataHandler.LoadPostData method.
I derived a class from RadioButtonList to verify when LoadPostData is called and I noticed that when non of the radio button is selected the method is not called and the same for SelectedIndexChanged event.
it seems that if the key of RadioButtonList is not present in the Page.Request.Form.Keys array, the LoadPostData is not called.
i read article "using javascript with asp.net radiobuttonlist control" and i found it useful.
[var RB1 = document.getElementById("<%=RadioButtonList1.ClientID%>"); var radio = RB1.getElementsByTagName("input"); if am setting radio[1].checked = 1; the item is checked. ]
I just wanted to clarify if selectedIndexChanged works on ajax cascading dropdowns as mine doesn't fire. Its in a user control inside an accordion pane. I've read conflicting things about this. All I want to do is check that the last of the 3 cascading dropdowns has been populated an enable a button if so.... but the event never fires when i make a selection on the last dropdown. If it isn't suppose to fire is there a way to raise an event when the selection is made and unmade (as when you change one of the other dropdowns the value resets and the buttton needs to be disabled.
I've got a UserControl that's used inside of an UpdatePanel. The UserControl is a fairly simple form that appears via a ModalPopupExtender (which is also part of the UserControl). There are four DropDownLists, as well as some other UI elements. Three of the four DropDownLists have AutoPostBack="true", with SelectedIndexChanged events that fire on the server and cause some of the other DropDownLists to rebind. Two of the three DDL's that AutoPostBack are working fine. One of them, which I only just added, is showing some strange behavior. Let's say I bind five Items to it: 1, 2, 3, 4, 5. I set the SelectedIndex to 0, which makes 1 the selected item. If I select 5 and then 1 and keep toggling back and forth, everything works fine. The postback occurs and SelectedIndexChanged fires. Every time. If I ever select 2 or 4, the postback occurs but SelectedIndexChanged does not fire. Every time.
If I ever select 3, something bizarre happens and sometimes the value of the DDL reverts to 1. Even though breakpoints seem to show that it's not rebinding and no unexpected code is running. I know your first instinct will probably be that I'm wrong about the rebinding code not running, but I have literally been staring at the debugger for hours trying to find my mistake. Lots of breakpoints. I don't get it -- this really isn't that complicated. But obviously I am missing something. I've put about four hours into this so far and I think I'm just grinding at this point. I could use another perspective.
HTML (and by the way, DropProtocolCycleID is the problem control): <asp:Panel ID="PanelPopupAssign" runat="server" Style="display:none; cursor: move; width:325px; background-color:Transparent;"> <BlueUI:Panel runat="server" ID="PanelPatientProtocol" Width="500px" HeaderText="Assign Protocol"> <table cellspacing="5"> <tr> <td style="width:150px;"></td> <td style="width:50px;"></td> <td style="width:125px;"></td> </tr> <tr runat="server" id="TableRowCategory"> <td align="right">Category:</td> <td colspan="2"> <asp:DropDownList runat="server" ID="DropProtocolCategories" CausesValidation="false" autopostback="true"/> </td> </tr> <tr> <td align="right">Protocol:</td> <td colspan="2">..............................
I create a dropDownList in code-behind, in selectIndexChange of another dropDownList, and add this new dropDownList to page using a placerHolder, everthing its ok, but new dropdownlist selectIndexChange event dont fire!
I have a table cell with a RadioButtonList. When each item is selected, the SelectedIndexChanged event is supposed to fire so the app can populate a related listbox. The problem is it stopped working. Now if I selected the first entry 'Division', the event never fires. I put a break-point on the event handler and it gets called for the other entries but not for Division. I'd believe it if some other code is interfering, I just don't know where to start looking.
[update] By not working, I mean if you selected Item #2, the update works; then if you select Item #1 it doesn't. If I change where the 'Division' item appears in the list, it still has the problem. Is there something in the page load cycle that could be aborting the event handling chain?
I have a radiobutton list that changes the contents of a dropdownlist when the selected radiobuttonlist index is changed using the SelectedIndexChanged event. Both controls are within the same updatepanel and both have autopostback set to true.
For some reason when I change the dropdownlist and cause a postback, the radiobuttonlist change event fires and repopulates the dropdownlist which effectively cancels the selection made in the dropdown.
I know something simple must be causing this behaviour but I cannot think what and my debugging efforts are not shedding any light thus far. I have tried putting a breakpoint on every procedure in my form and the first event that fires is the radiobuttonlist SelectedIndexChanged event so nothing in my server side code seems to be doing this which suggests it is something in the markup but I can't think what.
I have a DropDown which is bounded to an ObjectDataSource. On its data bound event, I am adding "--select--" value on the 0 index. I have a LinkButton on the page and on its client click, i am selecting different item on drop down (using JavaScript). Suppose there are 3 items like --select--, option1, option2 and option3 and now on link button's client click i selected option3, now if I select the default value "--select--", it does not fire the SelectedIndexChanged event. If I select any other value then it fires. Why does it not work for the default value?
I have a gridview and dropdownlist, let say the content of dropdownlist is YEAR and the content of gridview is Name and Year. Now for everytime I change the Value of dropdownlist the content of gridview will change but it will not load the page
I have a radionbuttonlist with 4 options, but none are selected as default (by design).How do I trigger an event when a users selects one for the first time? My onselectedindexCHANGED works fine.
I'm trying to display a confirm message box before firing selectedIndexChanged when user change selection in the dropDownList. I was wondering if anyone would an example of how to do this.
I'm using VS2008. When a dataset is bound to the DataSource of a ListView, SelectedIndexChanged event does not fire. If I used DataSourceID instead, it has no problem. But SelectedIndexChanging event fires for both.
why and how I can get SelectedIndexChanged event fired when DataSource is used?
I have a form which has some dropdownlists (ListItems "Yes" "No"). I use my form to Enter data & submit to database and use same form to Edit aswell. Like I redirect to this form from another page with a QueryString. If there is a QueryString then SELECT * FROM Table WHERE ID = QueryString's value & fill all the controls in the form like
[URL]
I have certain things to do when DropDownList.SelectedValue = "Yes" so I can use SelectedIndexChanged event handler & AutoPostBack="true" when submitting form for the first time. Now when I edit the information(Data filled from table as stated above). How can i automatically fire all events like DropDownlist SelectedIndexChanged in the page_Load iteslef so that all the things that are supposed to be done when DropDownList.SelectedValue = "Yes". I'm posting my test code for reference to explain what I'm trying to do. This is just the Idea. I have something else to deal with if i can get this stright. I need to dynamically add controls based on the values of DropDownList. please suggest some thing guys.
I have two radiobuttons in radiobuttonlist and based on selection, i am enabling and disabling the text box. First time i used date radiobutton and i took date in corresponding textbox and i saved it into database and then when i came back on same page i saw the date radiobutton is checked has proper value then i clicked on another radiobutton and this time page is postback and clear my all the data which was in my other controls(I have 5-6 text boxed on my page). I dont know why?, It supposed to select my other radiobutton and enable the corresponding text box
[Code]....
if (!Page.IsPostBack) { if (gvCredentialTypes.SelectedIndex >= 0) { CredentialType credType = CredentialType.FindCredentialType(gvCredentialTypes.SelectedValue.ToString()); if (!String.IsNullOrEmpty(credType.CredentialTypeName)) //If exists, load data { String expDays = credType.ExpirationLength.ToString(); DateTime expDate = Convert.ToDateTime(credType.ExpirationDate); // Assign the value to the controls LoadExpirationDaysDateValue(expDays, expDate); } } }
private void LoadExpirationDaysDateValue(String expDays, DateTime expDate) { // Determines whether value for Days or Date is present Boolean IsDays = false; // Check if days value is present if (String.IsNullOrEmpty(expDays) || expDays.Equals("0")) { txtExpirationDays.Text = String.Empty; } else { txtExpirationDays.Text = expDays; IsDays = true; } if (expDate.ToShortDateString().Equals ("1/1/0001")) { txtExpirationDate.Text = String.Empty; } else { txtExpirationDate.Text = expDate.ToShortDateString(); IsDays = false; } // Set the radio button value based on whether Date or Days value is present if (IsDays) { // Get ref to the 1st radio item ListItem liExpirationInDays = rbExpiration.Items.FindByValue("rbExpirationInDays"); if (liExpirationInDays != null) { liExpirationInDays.Selected = true; rbExpiration.Items.FindByValue("rbExpirationDate").Selected = false; txtExpirationDate.Text = string.Empty; txtExpirationDays.Text = expDays; // Enable or disable the controls based on the radio button selection txtExpirationDays.Enabled = true; RequiredFieldValidator1.Enabled = true; RangeValidator1.Enabled = true; txtExpirationDate.Enabled = false; RegularExpressionValidator1.Enabled = false; CalendarExtender2.Enabled = false; //compDateValidator.Enabled = false; RequiredFieldValidator2.Enabled = false; } } else { // Get ref to the 2nd radio item ListItem liExpirationDate = rbExpiration.Items.FindByValue("rbExpirationDate"); if (liExpirationDate != null) { liExpirationDate.Selected = true; rbExpiration.Items.FindByValue("rbExpirationInDays").Selected = false; txtExpirationDays.Text = string.Empty; txtExpirationDate.Text = expDate.ToShortDateString(); // Enable or disable the controls based on the radio button selection txtExpirationDate.Enabled = true; RegularExpressionValidator1.Enabled = true; RequiredFieldValidator2.Enabled = true; CalendarExtender2.Enabled = true; //compDateValidator.Enabled = true; txtExpirationDays.Enabled = false; RequiredFieldValidator1.Enabled = false; RangeValidator1.Enabled = false; } } }
that I would like to be always, on page load, to mark the first option ("no expiration date"). However, if the user marks the second option and reloads, the second option is selected, even though I do this on page load:
I have a gridview with a onrowdeleting="SellersGridView_RowsDeleting" switch. My method is:
[Code]....
Well, it seems that when I try to delete anything - nothing happens. I tried to change the first line to Response.Redirect("foo") just to check if the event itself is fired, and it turns out that it doesn't.