我的页面在updatepanel和一个按钮的页面上包含四个下拉列表。我将数据绑定到Page_Load事件的所有下拉列表,当我从任何一个下拉列表中选择项目时,它们各自的selectedindexchanged事件根本不会被触发。我已将所有下拉列表的Autopostback属性设置为true。这会调用page_load事件,但不会触发selectedindexchanged事件.Below是我的标记;
<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>
这是后面的代码;
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;
}
答案 0 :(得分:0)
尝试在Page OnInit事件中添加事件处理程序:
DropdownMachinesList.SelectedIndexChanged +=
new EventHandler(DropdownMachinesList_SelectedIndexChanged);
答案 1 :(得分:0)
尝试将UpdateMode更改为Always。
如果UpdateMode属性设置为Conditional,则需要显式调用UpdatePanel控件的Update方法。
回发是由使用UpdatePanel控件的Triggers属性定义为触发器的控件引起的。
答案 2 :(得分:0)
您始终可以在标记中设置事件处理程序和AutoPostBack属性。您已经为DropdownMachinesList
执行了此操作,因此您可以对其他模式执行相同的模式。