updatepanel とボタンのページに 4 つのドロップダウンリストを含むページがあります。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>
これがコードビハインドです。
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;
}