简体   繁体   中英

DropDownList's OnSelectedIndexChanged event is not firing

I have created the time slots....

It is basically Bootstrap code...., I want to execute it in .net for my project purpose....

I have used some DropDownLists in my project .... Their Events didn't work.....

It shows nothing after execute...

my code is as follows....

<body>
 <form id="Form1" runat="server">
    <!-- start: Header -->
    <div class="navbar">
        <div class="navbar-inner">
        </div>
    </div>
    <!-- start: Header -->

    <div class="container-fluid-full">
        <div class="row-fluid">
            <div id="content" class="span10">
                <div class="row-fluid">
                    <div class="box span12">
                        <div class="box-header">
                            <h2><i class="icon-bookmark"></i>Create Event</h2>
                        </div>
                        <div class="box-content">
                            <div id="MyWizard" class="wizard">
                                <ul class="steps">
                                    <li data-target="#step1" class="active"><span class="badge badge-info">1</span></li>
                                    <li data-target="#step2"><span class="badge">2</span></li>
                                    <li data-target="#step3"><span class="badge">3</span></li>
                                    <li data-target="#step4"><span class="badge">4</span></li>
                                    <li data-target="#step5"><span class="badge">5</span></li>
                                </ul>
                                <div class="actions">
                                    <button type="button" class="btn btn-prev"><i class="icon-arrow-left"></i>Prev</button>
                                    <button type="button" class="btn btn-success btn-next" data-last="Finish">Next<i class="icon-arrow-right"></i></button>
                                </div>
                            </div>
                            <div class="step-content">
                                <div class="step-pane active" id="step1" runat="server">
                                    <div class="control-group ">
                                        <div class="controls">
                                            <h1>Create a new event<asp:TextBox ID="EventName_TB" runat="server" CssClass="control-label"></asp:TextBox>
                                                starting on 
                                            <asp:TextBox ID="StartDate_TB" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span2 input-xlarge datepicker" ></asp:TextBox>
                                                for
                                                <asp:DropDownList ID="EventDuration_DDL" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span1" OnSelectedIndexChanged="EventDuration_DDL_SelectedIndexChanged">
                                                    <asp:ListItem>1</asp:ListItem>
                                                    <asp:ListItem>2</asp:ListItem>
                                                    <asp:ListItem>3</asp:ListItem>
                                                    <asp:ListItem>4</asp:ListItem>
                                                    <asp:ListItem>5</asp:ListItem>
                                                    <asp:ListItem>6</asp:ListItem>
                                                    <asp:ListItem>7</asp:ListItem>
                                                </asp:DropDownList>
                                                days. </h1>
                                        </div>
                                    </div>
                                </div>
                                <div class="step-pane" id="step2" runat="server" visible="false">
                                    <div class="control-group ">
                                        <h1>Matching making will be held on the following days:
                                        <br />
                                            <br />
                                        </h1>

                                        <div class="row-fluid">
                                            <span class="h1size">
                                                <asp:Label ID="Label1" runat="server" Visible="false"></asp:Label>
                                            </span>
                                            <div class="make-switch pull-right" data-on="info">
                                                <asp:CheckBox ID="CheckBox1" runat="server" Visible="false" />
                                            </div>
                                            <br/>
                                        </div>
                                    </div>

                                </div>
                                <div class="step-pane" id="step3">

                                    <h1>Matchmaking starts at 
                                        <asp:DropDownList ID="StartTime_DDL" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span2">
                                            <asp:ListItem Text="9:00 AM"></asp:ListItem>
                                            <asp:ListItem Text="9:30 AM"></asp:ListItem>
                                            <asp:ListItem Text="10:00 AM"></asp:ListItem>
                                            <asp:ListItem Text="10:30 AM"></asp:ListItem>
                                            <asp:ListItem Text="11:00 AM"></asp:ListItem>
                                            <asp:ListItem Text="11:30 AM"></asp:ListItem>
                                            <asp:ListItem Text="12:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="12:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="1:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="1:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="2:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="2:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="3:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="3:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="4:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="4:30 PM"></asp:ListItem>
                                        </asp:DropDownList>
                                        and ends at
                                        <asp:DropDownList ID="EndTime_DDL" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span2">
                                            <asp:ListItem Text="9:00 AM"></asp:ListItem>
                                            <asp:ListItem Text="9:30 AM"></asp:ListItem>
                                            <asp:ListItem Text="10:00 AM"></asp:ListItem>
                                            <asp:ListItem Text="10:30 AM"></asp:ListItem>
                                            <asp:ListItem Text="11:00 AM"></asp:ListItem>
                                            <asp:ListItem Text="11:30 AM"></asp:ListItem>
                                            <asp:ListItem Text="12:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="12:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="1:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="1:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="2:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="2:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="3:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="3:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="4:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="4:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="5:00 PM"></asp:ListItem>
                                            <asp:ListItem Text="5:30 PM"></asp:ListItem>
                                            <asp:ListItem Text="6:00 PM"></asp:ListItem>

                                        </asp:DropDownList>.

                                    <br /><br />
                                        Each slot is 
                                        <asp:DropDownList ID="SlotDuration_DDL" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span2" OnSelectedIndexChanged="SlotDuration_DDL_SelectedIndexChanged">

                                            <asp:ListItem>10</asp:ListItem>
                                            <asp:ListItem>15</asp:ListItem>
                                            <asp:ListItem>20</asp:ListItem>
                                            <asp:ListItem>25</asp:ListItem>
                                            <asp:ListItem>30</asp:ListItem>
                                            <asp:ListItem>35</asp:ListItem>
                                            <asp:ListItem>40</asp:ListItem>
                                            <asp:ListItem>45</asp:ListItem>
                                            <asp:ListItem>50</asp:ListItem>
                                            <asp:ListItem>55</asp:ListItem>
                                            <asp:ListItem>60</asp:ListItem>
                                        </asp:DropDownList>
                                        minutes long. </h1>

                                </div>
                                <div class="step-pane" id="step4">
                                    <div class="control-group ">
                                        <h1>The following slots are available for Matchmaking.
                                            <br/>
                                        </h1>
                                        <div class="alert alert-info">
                                            Turn off any slots you wish to disable.
                                        </div>
                                        <div class="row-fluid">
                                                <div class="span6">
                                            <h1>
                                                    <asp:Label ID="Date_label" runat="server"></asp:Label>
                                                </h1>
                                                <div class="task low" runat="server" id="Timediv">

                                                </div>

                                                <div class="clearfix"></div>

                                            </div>
                                        </div>
                                    </div>
                                </div>
                                </div>
                                <div class="step-pane" id="step5">
                                    <h1>Your event is ready!</h1>
                                </div>

                            </div>

                        </div>

                    </div>
                    <!--/span-->

                </div>
                <!--/row-->

            </div>

            <!-- end: Content -->

        </div>
        <!--/fluid-row-->

Code Behind....

 protected void EventDuration_DDL_SelectedIndexChanged(object sender, EventArgs e)
    {
        int n = Int32.Parse(EventDuration_DDL.SelectedItem.ToString());

        for (int i = 0; i < n; i++)
        {

            Label NewLabel = new Label();
            NewLabel.ID = "Label" + i;
            var eventDate = Calendar1.SelectedDate.Date.AddDays(i);
            NewLabel.Text = eventDate.ToLongDateString();

            CheckBox newcheck = new CheckBox();
            newcheck.ID = "CheckBox" + i;

            this.Labeldiv.Controls.Add(new LiteralControl("<span class='h1size'>"));
            this.Labeldiv.Controls.Add(NewLabel);
            this.Labeldiv.Controls.Add(new LiteralControl("</span>"));
            this.Labeldiv.Controls.Add(new LiteralControl("<div class='make-switch pull-right' data-on='info'>"));
            this.Labeldiv.Controls.Add(newcheck);
            this.Labeldiv.Controls.Add(new LiteralControl("</div>"));
            this.Labeldiv.Controls.Add(new LiteralControl("<br/>"));
        }  
    }

    protected void SlotDuration_DDL_SelectedIndexChanged(object sender, EventArgs e)
    {

        Date_label.Text = Calendar1.SelectedDate.ToShortDateString();
        DateTime start = DateTime.Parse(StartTime_DDL.SelectedItem.Text);
        DateTime end = DateTime.Parse(EndTime_DDL.SelectedItem.Text);
        double duration = double.Parse(SlotDuration_DDL.SelectedItem.Text);
        string header = "<div class='priority low'><span><strong>{0}</strong></span></div>";
        string header1 = "<div class='priority medium'><span><strong>{0}</strong></span></div>";
        string morning = "";
        string afternon = "";
        bool doneMornHeader = false, doneAfternoonHeader = false;
        while (true)
        {
            DateTime dtNext = start.AddMinutes(duration);
            if (start > end || dtNext > end)
                break;
            if (start < DateTime.Parse("12:00 PM"))
            {
                if (!doneMornHeader)
                {
                    Label head = new Label();
                    head.Text = string.Format(header, "Morning");
                    this.Timediv.Controls.Add(head);
                    doneMornHeader = true;
                }
                morning = start.ToShortTimeString() + "-" + dtNext.ToShortTimeString();
                Label lbl = new Label();
                lbl.Text = morning;
                CheckBox cb = new CheckBox();
                this.Timediv.Controls.Add(new LiteralControl("<div class='span6'><div class='task low'>"));
                this.Timediv.Controls.Add(new LiteralControl("<div class='desc'>"));
                this.Timediv.Controls.Add(new LiteralControl("<div class='title'>"));
                this.Timediv.Controls.Add(lbl);
                this.Timediv.Controls.Add(new LiteralControl("<div class='make-switch span5 pull-right' data-on='success'>"));
                this.Timediv.Controls.Add(cb);
                this.Timediv.Controls.Add(new LiteralControl("</div>"));
                this.Timediv.Controls.Add(new LiteralControl("</div>"));
                this.Timediv.Controls.Add(new LiteralControl("</div>"));
                this.Timediv.Controls.Add(new LiteralControl("</div>"));
                this.Timediv.Controls.Add(new LiteralControl("<br>"));
            }
            else
            {
                if (!doneAfternoonHeader)
                {
                    Label head = new Label();
                    head.Text = string.Format(header1, "Afternoon");
                    this.Timediv.Controls.Add(head);
                    doneAfternoonHeader = true;
                }
                afternon = start.ToShortTimeString() + "-" + dtNext.ToShortTimeString();
                Label lbl1 = new Label();
                lbl1.Text = afternon;
                CheckBox cb1 = new CheckBox();
                this.Timediv.Controls.Add(new LiteralControl("<div class='span6'><div class='task low'>"));
                this.Timediv.Controls.Add(new LiteralControl("<div class='desc'>"));
                this.Timediv.Controls.Add(new LiteralControl("<div class='title'>"));
                this.Timediv.Controls.Add(lbl1);
                this.Timediv.Controls.Add(new LiteralControl("<div class='make-switch span5 pull-right' data-on='success'>"));
                this.Timediv.Controls.Add(cb1);
                this.Timediv.Controls.Add(new LiteralControl("</div>"));
                this.Timediv.Controls.Add(new LiteralControl("</div>"));
                this.Timediv.Controls.Add(new LiteralControl("</div>"));

                this.Timediv.Controls.Add(new LiteralControl("<br>"));

            }
            start = dtNext;
        }
}

The Events didn't work..........

any solution please...............!

and one more problem is to add one or more days to the date which is from textbox????

Set to <asp: DropDownList> that has the OnSelectedIndexChanged event the AutoPostback = True and that will work.

Example:

<asp:DropDownList ID="EventDuration_DDL" runat="server" AutoPostback="True" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span1" OnSelectedIndexChanged="EventDuration_DDL_SelectedIndexChanged" >

Try to set <asp:DropDownList> AutoPostBack to true :

<asp:DropDownList ID="EventDuration_DDL" AutoPostBack="True" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span1" OnSelectedIndexChanged="EventDuration_DDL_SelectedIndexChanged">

To add days to your DateTime use:

YourDateTime = YourDateTime.AddDays(1);

@Thor..for working on dropdown from server side you need to set AutoPostBack property to true and if your design is a wizard step type and it goes to Step 1 then it will be a bad practice, but you can explicitly set the wizard step to your current step after the dropdown processing gets completed.

If you are using a .net wizard then use ajax update panels and then you will remain on current step only.

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