[英]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; 我的页面在updatepanel的页面和一个按钮上包含四个下拉列表。我将数据绑定到Page_Load事件上的所有下拉列表,并且当我从任何一个下拉列表中选择项目时,它们各自的selectedindexchanged事件根本不会被触发。所有下拉列表的Autopostback属性都设置为true。这使page_load事件可以调用,但不会触发selectedindexchanged事件。
<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%">
<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: 尝试在Page OnInit事件上添加事件处理程序 :
DropdownMachinesList.SelectedIndexChanged +=
new EventHandler(DropdownMachinesList_SelectedIndexChanged);
Try changing the UpdateMode to Always. 尝试将UpdateMode更改为Always。
If the UpdateMode property is set to Conditional then you need to call the Update method of the UpdatePanel control explicitly. 如果UpdateMode属性设置为Conditional,则需要显式调用UpdatePanel控件的Update方法。
The postback is caused by a control that is defined as a trigger by using the Triggers property of the UpdatePanel control. 回发是由使用UpdatePanel控件的Triggers属性定义为触发器的控件引起的。
You could always set the event handlers and the AutoPostBack properties in the markup. 您总是可以在标记中设置事件处理程序和AutoPostBack属性。 You have already done this for
DropdownMachinesList
, so you could follow the same pattern for the others. 您已经为
DropdownMachinesList
完成了此操作,因此可以对其他模式遵循相同的模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.