#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
показать модальный.