Модальный загрузчик мигает / исчезает мгновенно — ASP.NET команда gridview RowCommand

#c# #asp.net #gridview #webforms #modal-dialog

#c# #asp.net #просмотр сетки #веб-формы #модальный диалог

Вопрос:

Всем доброго утра. Кажется, я застрял между молотом и наковальней и боюсь, что могу упустить что-то невероятно простое. В настоящее время я разрабатываю приложение webforms с использованием ASP.NET Управление с помощью сетки.

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

Кнопка, которую я использую для переключения модального режима начальной загрузки, находится в элементе управления asp:

 <asp:TemplateField HeaderText="Approval Information">
     <ItemTemplate >
        <asp:Button Text="Stats" runat="server" CommandName="ApprovalModal" type="button" class="btn btn-info" OnClientClick="return false" data-toggle="modal" data-target="#myModal"/>
     </ItemTemplate>
</asp:TemplateField>
 

В настоящее время эта кнопка может просто отлично переключать мой модальный режим. Проблема в том, что я хочу подписаться на событие RowCommand в GridView, чтобы я мог изменить текст литерального элемента управления ASP в модальном режиме для отображения статистики строк для каждой отдельной строки при нажатии:

   protected void gvwApprovals_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "ApprovalModal")
        {
            approvalModalText.Text = "Some Unique Row Stats";
            approvalModalText.Visible = true;
        }
    }
 

Единственный способ, которым я могу подписаться на это событие и запустить его, — это если я выну OnClientClick="return false"

Однако, если я уберу это из кнопки ASP, я подпишусь на событие, но тогда модальный загрузчик теперь просто мигает и исчезает.

Вот мой модальный:

 <!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
  <div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header" style="display: block;">
        <button type="button" class="close" data-dismiss="modal">amp;times;</button>
        <h4 class="modal-title">Approval Information - Relevant Statistics</h4>
      </div>
      <div class="modal-body" >
        <asp:Literal ID="approvalModalText" runat="server" Text='placeholder' Visible="false" />
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>
 

Чего мне здесь не хватает? Доступно для уточнения любых дальнейших вопросов. Довольно новичок в элементах управления ASP в целом, поэтому я не уверен, есть ли что-то супер простое, о чем я мог бы просто не знать.

Редактировать:

Конечно, есть сообщение, которое запускает команду RowCommand, которая перезагружает страницу, и модальное значение исчезает. Спасибо Алексу за то, что указал мне на это в комментариях (я знал, что это что-то глупое и простое). Необходимо использовать RegisterStartupScript обработчик команды in Row для отображения модального, а не просто для прямого переключения. jQuery вот я и пришел.

Комментарии:

1. в rowcommand обработчике registerstartupscript , который показывает модальный.

2. Разве это не потребовало бы от меня использования jQuery? Каждый пример, который я видел с этим подходом, использует jQuery.

3. bootstrap для этого требуется jquery, как и для вас.

4. Я знаю, что для начальной загрузки требуется jQuery, но, думаю, мой вопрос в том, почему я могу переключать модальный режим совершенно нормально, пока не удалю OnClientClick="return false" его с кнопки? Каково поведение по умолчанию за кулисами, из-за которого оно немедленно исчезает?

5. страница post запускает rowcommand обработчик на стороне сервера, поэтому модальные (на стороне клиента) исчезают при перезагрузке страницы. вот почему вам нужно .registerstartupscript показать модальный.