выборка и заполнение значений в модальном всплывающем окне начальной загрузки

Это то, чего я пытаюсь достичь здесь. Пользователь нажимает кнопку, и появляется модальное всплывающее окно начальной загрузки. Пользователь вводит значение идентификатора события в текстовое поле модального всплывающего окна, и я хочу, чтобы информация о событии отображалась в других полях модального всплывающего окна.

Я написал функцию для события txtEventId_TextChanged и смог получить значение, введенное в текстовое поле идентификатора события. Я смог передать это значение в базу данных и также получить соответствующие значения из базы данных.

Моя проблема сейчас в том, что я не могу отображать эти данные в модальном всплывающем окне.

Вот HTML-код:

          <!-- Maintainenance Modal -->


        <div class="modal fade" id="maintenanceModal" role="dialog" tabindex = -1 aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="false">
            <div class="modal-dialog">

               <!-- Maintaineance Modal content-->

                <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                               <h4 class="modal-title">Maintain Event</h4>
                        </div>

                          <div class="row">
                                <div class="col-xs-2">
                                    <div class ="form-group">
                                        <label for="eventID" id="lblEventId">EventID</label> 
                                    </div>
                                </div>
                                <div class="col-xs-6">
                                    <div class="form-group">
                                        <asp:TextBox ID="txtEventId" runat="server" CssClass="form-control dialogtextbox" AutoPostBack="false" OnTextChanged="txtEventId_TextChanged"></asp:TextBox>
                                    </div>
                                </div>
                            </div>
                    <asp:HiddenField ID="HiddenField1" runat="server" />
                <div class="modal-body">
                  <div class="EventsIcons"> 
                         <div class ="form-group">
                            <label for="MaintainDropDown" id="MaintainEventLabel">Select The Event Type </label>
                            <select id="MaintainDropDown" runat="server" class="btn btn-default dropdown-toggle eventdropdown" data-toggle="dropdown" aria-expanded="true">
                                <option value="WorkAnniversary">WORKANNIVERSARY</option>
                                <option value="Birthday">BIRTHDAY</option>
                                <option value="Community">COMMUNITY</option>
                                <option value="FoodSafety">FOOD SAFETY</option>
                                <option value="Health&Safety">HEALTH & SAFETY</option>
                                <option value="Holiday">HOLIDAY</option>
                                <option value="Maintenance">MAINTENANCE</option>
                                <option value="QualityAudit">QUALITY AUDIT</option>
                                <option value="SocialEvent">SOCIAL EVENT</option>
                                <option value="Stat-Holiday">STAT-HOLIDAY</option>
                                <option value="Sustainability">SUSTAINABILITY</option>
                                <option value="TownHall">TOWN HALL</option>
                                <option value="Visitor">VISITOR</option>
                                <option value="Wellness">WELLNESS</option>
                            </select> 
                        </div>


                 </div> 

                    <div class="Description">
                        <label for="description" id="MaintainDescription">Description</label>
                        <textarea class="form-control" rows="5" id="maintainTxtDescription" name="eventdescription" runat="server"></textarea>
                    </div>

                    <div class="row">
                        <div class="col-xs-2">
                            <div class="form-group">
                                <label id="Label3">Start Time</label>
                            </div>
                        </div>
                        <div class='col-xs-6'>
                            <div class="form-group">
                                <div class='input-group date' id="maintainStartDate">
                                    <asp:TextBox ID="maintainTxtStartDate" runat="server" CssClass="form-control dialogtextbox"></asp:TextBox>
                                    <span class="input-group-addon">
                                        <span class="glyphicon glyphicon-calendar"></span>
                                    </span>
                                </div>
                            </div>
                        </div>
                        <div class="col-xs-4">
                            <div class="form-group">
                                <div class="input-group date" id="startTime">
                                    <asp:TextBox ID="maintainTxtStartTime" runat="server" CssClass="form-control dialogtextbox"></asp:TextBox>
                                    <span class="input-group-addon">
                                        <span class="glyphicon glyphicon-time"></span>
                                    </span>
                                </div>
                           </div>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-xs-2">
                          <div class="form-group">
                            <label id="Label4">End Time</label>
                          </div>
                        </div>
                        <div class="col-xs-6">
                          <div class="form-group">
                                <div class="input-group date" id="endDate">
                                    <asp:TextBox ID="maintainTxtEndDate" runat="server" CssClass="form-control dialogtextbox"></asp:TextBox>
                                    <span class="input-group-addon">    
                                        <span class="glyphicon glyphicon-calendar"></span>
                                    </span>
                                </div>
                            </div>
                          </div>   
                          <div class="col-xs-4">
                            <div class="form-group">
                                <div class="input-group date" id="endTime">
                                    <asp:TextBox ID="maintainTxtEndTime" runat="server" CssClass="form-control dialogtextbox"></asp:TextBox>
                                    <span class="input-group-addon">
                                        <span class="glyphicon glyphicon-time"></span>
                                    </span>
                                </div>
                            </div>
                          </div>
                    </div>

                    <div class="row">
                        <div class="col-xs-offset-1 col-xs-6">
                            <div class="form-group">
                                <asp:CheckBox ID="maintainChkBoxAllDayEvents" runat="server" CssClass="checkbox" Text="All Day Event" OnClick="document.getElementById('maintainTxtStartTime').disabled = this.checked;document.getElementById('maintainTxtEndTime').disabled = this.checked;" />
                            </div>
                        </div>
                        <div class="col-xs-offset-1 col-xs-4">
                            <div class="form-group">
                                <asp:Button ID="btnMaintainSubmit" runat="server" Text="SUBMIT" 
                                    CssClass="btn btn-group-justified btn-success" />
                            </div>
                        </div>
                    </div>

                </div>

            <div class="modal-footer">
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    </div>
  </div>

</div>

И вот мой код за кодом.

    protected void txtEventId_TextChanged(object sender, EventArgs e)
    {
        BusinessLogicLayer BL = new BusinessLogicLayer();

        EventId = Convert.ToInt32(txtEventId.Text);

        try
        {
          DataTable dt =  BL.BLGetEventDetails(EventId);

          foreach (DataRow row in dt.Rows)
          {
              StartDate = row["StartDate"].ToString();
              EndDate = row["EndDate"].ToString();
              StartTime = row["StartTime"].ToString();
              EndTime = row["EndTime"].ToString();
              EventDescription = row["EventDescription"].ToString();
              EventType = row["EventType"].ToString();

              if (StartDate.Equals(""))
              {
                  MessageBox.Show("EventId Does Not Exists");
                  maintainTxtStartDate.Text = "";
                  maintainTxtStartTime.Text = "";
                  maintainTxtEndDate.Text = "";
                  maintainTxtEndTime.Text = "";
                  MaintainDropDown.Disabled = true;
              }
              else
              {
                  maintainTxtStartDate.Text = StartDate;
                  maintainTxtStartTime.Text = StartTime;
                  maintainTxtEndDate.Text = EndDate;
                  maintainTxtEndTime.Text = EndTime;
                  MaintainDropDown.Value = EventType;
                  maintainTxtDescription.InnerText = EventDescription;
              }

          }


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "txtEventId_TextChanged", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

Если я укажу AutoPostBack="true" для txtEventId, всплывающее окно исчезнет с экрана после того, как я введу значение и нажму Enter. Если я устанавливаю AutoPostBack = "false", тогда он не заполняет значения, так как элемент управления не переходит к функции txtEventId_TextChanged. Я не хочу устанавливать AutoPostBack="true", потому что во время обратной передачи вся страница будет перезагружена, а модальное всплывающее окно исчезнет. Я попытался установить для него scriptmanager и updatepanel, но, поскольку у меня уже есть другой существующий scriptmanager и updatepanel, добавленные на страницу Default.aspx, я не могу добавить к нему новый.

Подскажите, пожалуйста, что я делаю не так и как это исправить. Ваше руководство высоко ценится.


person metalwailer    schedule 12.08.2015    source источник


Ответы (1)


У вас есть два варианта:

  1. RegisterStartupScript

    Используйте RegisterStartupScript в конце вашего метода, чтобы отправить код JS клиенту, вы отправите вызов своему модальному модулю, как это

    ScriptManager.RegisterStartupScript(this, typeof(Page), "callModal", 
    "$('#maintenanceModal').modal();", true);
    

    Это самый простой способ добиться желаемого

  2. Методы страницы

    Вы можете использовать PageMethods для возврата JSON со значениями, которые вы хотите отобразить, таким образом вам не нужно выполнять обратную передачу, и вы получите нужную информацию. См. требования и способы использования PageMethods.

person Enrique Zavaleta    schedule 12.08.2015