简体   繁体   中英

Dropdownlists selectedIndexchanged event does not get fired

I have page that contains four dropdownslists on a page in updatepanel and a button.I am binding data to all dropdowns on Page_Load event and when i select item from any one of dropdowns their respective selectedindexchanged event does not get fired at all.I have set Autopostback property of all dropdowns to true.This makes page_load event to call but does not fire selectedindexchanged event.Below is my markup;

<asp:UpdatePanel ID="UpdatePanelDialysisMachine" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
              <table id="tableDialysisMachine" runat="server" clientidmode="Static" style="width: 98%;
                display: table; margin-left: 10px; margin-right: 5px" border="0" cellpadding="2"
                cellspacing="2" class="table">
                <tr>
                    <th style="height: 10px; width: 100%">
                    </th>
                </tr>
                <tr>
                    <td style="height: 10px; width: 100%;" align="center">
                         <asp:Label ID="LabelDialysisSession" runat="server" Text="Dialysis Session" CssClass="sectionHeader"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <th style="height: 10px; width: 100%">
                    </th>
                </tr>
                <tr>
                    <td style="width: 100%" align="center"><asp:Label ID="LabelMachineMessage" runat="server" Visible="false" ClientIDMode="Static"></asp:Label>
                    </td>
                </tr>                    
                <tr>
                    <td>
                    <fieldset>
                        <legend>
                           <asp:Label ID="LabelSelectMachines" runat="server" Text="Dialysis Machine"></asp:Label>
                        </legend>

                   <%-- </td>
                </tr>
                <tr>
                    <th style="height: 10px">
                    </th>
                </tr>

                <tr>
                    <td>--%>
                        <table style="width: 100%;"  border="0" cellpadding="2" cellspacing="2">
                           <tr>
                                <th colspan="2" style="height: 10px">
                                </th>
                            </tr>
                            <tr>
                                <td class="textRightAlign" style="width: 50%">
                                    <asp:Label ID="LabelMachine" runat="server" Text="Select Machine"></asp:Label>
                                </td>
                                <td class="textLeftAlign" style="width: 50%">
                                    &nbsp;&nbsp;<asp:DropDownList ID="DropdownMachinesList" runat="server" 
                                        CssClass="dropDown" EnableViewState="true" 
                                        onselectedindexchanged="DropdownMachinesList_SelectedIndexChanged" 
                                        AutoPostBack="True" >
                                    </asp:DropDownList>
                                </td>
                            </tr>
                             <tr>
                                <th style="height: 10px" colspan="2">
                                </th>
                            </tr>
                        </table>
                        </fieldset>
                    </td>
                </tr>
                <tr>
                <td>
                <fieldset>
                <legend>
                <asp:Label ID="LabelAssignStaff" runat="server" Text="Assign Staff"></asp:Label>
                </legend>
                <table style="width: 100%;"  border="0" cellpadding="2" cellspacing="2">
                           <tr>
                                <th colspan="2" style="height: 10px">
                                </th>
                            </tr>
                              <tr>
                <td class="textRightAlign">
                    <asp:Label ID="LabelPrimaryDoctor" runat="server" Text="Primary Doctor" EnableViewState="true" ></asp:Label>
                </td>
                <td class="textLeftAlign">
                    <asp:DropDownList ID="DropDownListPrimaryDoctor" runat="server" 
                        ClientIDMode="Static" CssClass="dropDown" EnableViewState="true" 
                        AutoPostBack="True">

                    </asp:DropDownList>
                </td>
                <td class="textRightAlign">
                    <asp:Label ID="LabelSecondaryDoctor" runat="server" Text="Secondary Doctor"></asp:Label>
                </td>
                <td class="textLeftAlign">
                    <asp:DropDownList ID="DropDownListSecondaryDoctor" runat="server" ClientIDMode="Static" CssClass="dropDown" EnableViewState="true">

                    </asp:DropDownList>
                </td>
           </tr>
            <tr>
                <td class="textRightAlign">
                    <asp:Label ID="LabelPrimaryNurse" runat="server" Text="Primary Nurse"  ></asp:Label>
                </td>
                <td class="textLeftAlign" width="20px">
                    <asp:DropDownList ID="DropDownListPrimaryNurse" runat="server" ClientIDMode="Static" CssClass="dropDown" EnableViewState="true">


                    </asp:DropDownList>
                </td>
                <td class="textRightAlign">
                    <asp:Label ID="LabelSecondaryNurse" runat="server" Text="Secondary Nurse" meta:resourcekey="LabelSecondaryNurseResource1"></asp:Label>
                </td>
                <td class="textLeftAlign" width="20px">
                    <asp:DropDownList ID="DropDownListSecondaryNurse" runat="server" ClientIDMode="Static" CssClass="dropDown" EnableViewState="true">

                    </asp:DropDownList>
                </td>
            </tr>
                             <tr>
                                <th style="height: 10px" colspan="2">
                                </th>
                            </tr>

                        </table>
                </fieldset>
                </td>
                </tr>
                <tr>
                            <td style="width:100%" align="center">
                                <asp:Button ID="buttonCreateSession" runat="server" CssClass="buttonExpanded" 
                                    Text="Create Session" ClientIDMode="Static" CausesValidation="false" 
                                    onclick="buttonCreateSession_Click" /></td>
                            </tr>
                             <tr>
                                <th style="height: 10px">
                                </th>
                            </tr>
            </table>
        </ContentTemplate>

    </asp:UpdatePanel>

and here is the code behind;

 protected void Page_Load(object sender, EventArgs e)
{

    if (Page.IsPostBack == false)
    {          
        GetDoctors();
        GetNurse();
        GetMachines();
    }        


} 

 private void GetMachines()
{
    DataTable machines = null;
    try
    {
        machines = m_DialysisSessionManager.GetInactiveMachines();
        if (machines != null)
        {
            //ListItem l8 = new ListItem();
            //l8.Text = "-Select-";
            //l8.Value = "-1";
            //l8.Selected = true;
            //DropDownListmachine.Items.Add(l8);
            DropdownMachinesList.DataSource = machines;
            DropdownMachinesList.DataTextField = "SerialNumber";
            DropdownMachinesList.DataValueField = "id";
            DropdownMachinesList.DataBind();
            DropdownMachinesList.Items.Insert(0, new ListItem("-Select-"));

        }
    }
    catch (Exception ex)
    {
        LoggingHelper.WriteError(ex);
    }
}

/// <summary>
/// Gets doctors list
/// </summary>
private void GetDoctors()
{
    DataTable doctors = null;
    try
    {
        doctors = m_DialysisSessionManager.GetDoctorsList();
        if (doctors != null)
        {

            DropDownListPrimaryDoctor.DataSource = doctors;
            DropDownListPrimaryDoctor.DataTextField = "Name";
            DropDownListPrimaryDoctor.DataValueField = "UserId";
            DropDownListPrimaryDoctor.DataBind();
            DropDownListPrimaryDoctor.Items.Insert(0, new ListItem("-Select-"));


            DropDownListSecondaryDoctor.DataSource = doctors;
            DropDownListSecondaryDoctor.DataTextField = "Name";
            DropDownListSecondaryDoctor.DataValueField = "UserId";
            DropDownListSecondaryDoctor.DataBind();
            DropDownListSecondaryDoctor.Items.Insert(0, new ListItem("-Select-"));
        }
    }
    catch (Exception ex)
    {
        LoggingHelper.WriteError(ex);
    }
}

/// <summary>
/// Gets Nurse list
/// </summary>
private void GetNurse()
{
    DataTable nurse = null;
    try
    {
        nurse = m_DialysisSessionManager.GetNurseList();
        if (nurse != null)
        {


            DropDownListPrimaryNurse.DataSource = nurse;
            DropDownListPrimaryNurse.DataTextField = "Name";
            DropDownListPrimaryNurse.DataValueField = "UserId";
            DropDownListPrimaryNurse.DataBind();
            DropDownListPrimaryNurse.Items.Insert(0, new ListItem("-Select-"));


            DropDownListSecondaryNurse.DataSource = nurse;
            DropDownListSecondaryNurse.DataTextField = "Name";
            DropDownListSecondaryNurse.DataValueField = "UserId";
            DropDownListSecondaryNurse.DataBind();
            DropDownListSecondaryNurse.Items.Insert(0, new ListItem("-Select-"));
        }
    }
    catch (Exception ex)
    {

    }
}
 protected void DropdownMachinesList_SelectedIndexChanged(Object sender, EventArgs e)
{
    Session["machineId"] = DropdownMachinesList.SelectedItem.Text;
}

Try adding Event Handler on Page OnInit Event:

DropdownMachinesList.SelectedIndexChanged += 
                   new EventHandler(DropdownMachinesList_SelectedIndexChanged);

Try changing the UpdateMode to Always.

If the UpdateMode property is set to Conditional then you need to call the Update method of the UpdatePanel control explicitly.

The postback is caused by a control that is defined as a trigger by using the Triggers property of the UpdatePanel control.

You could always set the event handlers and the AutoPostBack properties in the markup. You have already done this for DropdownMachinesList , so you could follow the same pattern for the others.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM