1

updatepanel とボタンのページに 4 つのドロップダウンリストを含むページがあります。Pag​​e_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%">
                                    &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>

これがコードビハインドです。

 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;
}
4

3 に答える 3

0

ページOnInitイベントにイベントハンドラーを追加してみてください。

DropdownMachinesList.SelectedIndexChanged += 
                   new EventHandler(DropdownMachinesList_SelectedIndexChanged);
于 2012-11-01T09:39:41.733 に答える
0

マークアップでイベント ハンドラーと AutoPostBack プロパティをいつでも設定できます。についてはすでにこれを行っているDropdownMachinesListので、他のものについても同じパターンに従うことができます。

于 2012-11-01T09:55:35.240 に答える
0

UpdateMode を Always に変更してみてください。

UpdateMode プロパティが Conditional に設定されている場合は、UpdatePanel コントロールの Update メソッドを明示的に呼び出す必要があります。

ポストバックは、UpdatePanel コントロールの Triggers プロパティを使用してトリガーとして定義されているコントロールによって発生します。

于 2012-11-01T09:47:26.897 に答える