bootstrap 从代码隐藏加载弹出窗口后的模态弹出窗口
bootstrap modal popup after loading popup from codebehind
我想在点击按钮时在 bootstrap 模式弹出窗口中显示 gridview,但是直到 gridview 没有绑定我只想显示加载面板,为此我正在做的是..
我正在调用加载弹出窗口,如下所示。
<asp:Button ID="btnSearch" runat="server" CausesValidation="true" Text="Search" CssClass="btn btn-info pull-right"
OnClientClick="waitingDialog.show();" ValidationGroup="MinMax" OnClick="btnSearch_Click" />
同时在代码隐藏中我正在调用 Button OnClick 并且在 GridView 绑定之后我正在执行以下过程。
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script type='text/javascript'>");
sb.Append("$('#myModal').modal('show');");
sb.Append("waitingDialog.hide();");
sb.Append(@"</script>");
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "MinMax Data Report", sb.ToString(), false);
但问题是我的 GridView 非常大,但是当带有 gridview 的弹出窗口加载时不显示水平和垂直滚动条。换句话说,弹出窗口只是在没有滚动条的情况下加载。如果我删除加载面板并直接调用那个弹出窗口,那么它工作正常。我什么也没得到。
我想要加载面板,因为我的 gridview 需要将近 32 秒才能加载。
下面是我的 gridview 模态主体。
<div class="modal-body" style="width=97%; overflow: auto;">
<div class="tabel-responsive">
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Panel ID="panel2" runat="server" ScrollBars="Auto" Width="100%" Height="100%"
HorizontalAlign="Center">
<asp:GridView ID="gvMeterData" runat="server" RowStyle-Wrap="false" CssClass="table table-striped"
GridLines="Both" OnRowDataBound="gvMeterData_RowDataBound" HeaderStyle-HorizontalAlign="Center">
</asp:GridView>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvMeterData" EventName="RowDataBound" />
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
我的加载弹窗如下。
var waitingDialog = waitingDialog || (function ($) {
'use strict';
// Creating modal dialog's DOM
var $dialog = $(
'<div class="modal fade" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-hidden="true" style="padding-top:15%; overflow-y:auto;">' +
'<div class="modal-dialog modal-sm">' +
'<div class="modal-content">' +
'<div class="modal-header"><h3 style="margin:0;"></h3></div>' +
'<div class="modal-body">' +
'<div class="progress progress-striped active" style="margin-bottom:0;"><div class="progress-bar" style="width: 100%"></div></div>' +
'</div>' +
'</div></div></div>');
return {
/**
* Opens our dialog
* @param message Custom message
* @param options Custom options:
* options.dialogSize - bootstrap postfix for dialog size, e.g. "sm", "m";
* options.progressType - bootstrap postfix for progress bar type, e.g. "success", "warning".
*/
show: function (message, options) {
// Assigning defaults
if (typeof options === 'undefined') {
options = {};
}
if (typeof message === 'undefined') {
message = 'Loading';
}
var settings = $.extend({
dialogSize: 'm',
progressType: '',
onHide: null // This callback runs after the dialog was hidden
}, options);
// Configuring dialog
$dialog.find('.modal-dialog').attr('class', 'modal-dialog').addClass('modal-' + settings.dialogSize);
$dialog.find('.progress-bar').attr('class', 'progress-bar');
if (settings.progressType) {
$dialog.find('.progress-bar').addClass('progress-bar-' + settings.progressType);
}
$dialog.find('h3').text(message);
// Adding callbacks
if (typeof settings.onHide === 'function') {
$dialog.off('hidden.bs.modal').on('hidden.bs.modal', function (e) {
settings.onHide.call($dialog);
});
}
// Opening dialog
$dialog.modal();
},
/**
* Closes dialog
*/
hide: function () {
$dialog.modal('hide');
}
};})(jQuery);
已编辑: 我认为更新面板可能有问题。不是吗?但是没有更新面板我也无法跟踪错误。当我再次查看浏览器中的检查元素时,控制台中也没有错误,例如缺少 .js 或任何东西。
提前致谢。
我无法弄清楚我上面的代码应该在哪里出错,我不能为此使用 AJAX 因为 Yocto OS 不支持它,因为我必须这样做此代码 运行 在那里。
所以最后我对我的解决方案进行了如下更改,我找到了显示加载的方式..
我找到了两种方法..
1 在这个 link.. Loading In Popup..
另一种方法是我在页面开始处保留计时器和加载 'Loading Image',并在我的 gridview 通过禁用计时器完全绑定时停止加载图像。逻辑如下。
.aspx 页面..
<asp:Timer ID="Timer1" runat="server" OnTick="TimerTick" Interval="6000">
</asp:Timer><asp:Image ID="imgLoader" runat="server" ImageUrl="~/loading7.gif" />
.CS页面
protected void TimerTick(object sender, EventArgs e)
{
this.fillGrid();
Timer1.Enabled = false;
imgLoader.Visible = false;
}
这很好用。
但我仍在等待我的实际问题的答案。这就是滚动条熄灭或不工作的原因。
我想在点击按钮时在 bootstrap 模式弹出窗口中显示 gridview,但是直到 gridview 没有绑定我只想显示加载面板,为此我正在做的是.. 我正在调用加载弹出窗口,如下所示。
<asp:Button ID="btnSearch" runat="server" CausesValidation="true" Text="Search" CssClass="btn btn-info pull-right"
OnClientClick="waitingDialog.show();" ValidationGroup="MinMax" OnClick="btnSearch_Click" />
同时在代码隐藏中我正在调用 Button OnClick 并且在 GridView 绑定之后我正在执行以下过程。
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script type='text/javascript'>");
sb.Append("$('#myModal').modal('show');");
sb.Append("waitingDialog.hide();");
sb.Append(@"</script>");
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "MinMax Data Report", sb.ToString(), false);
但问题是我的 GridView 非常大,但是当带有 gridview 的弹出窗口加载时不显示水平和垂直滚动条。换句话说,弹出窗口只是在没有滚动条的情况下加载。如果我删除加载面板并直接调用那个弹出窗口,那么它工作正常。我什么也没得到。
我想要加载面板,因为我的 gridview 需要将近 32 秒才能加载。 下面是我的 gridview 模态主体。
<div class="modal-body" style="width=97%; overflow: auto;">
<div class="tabel-responsive">
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Panel ID="panel2" runat="server" ScrollBars="Auto" Width="100%" Height="100%"
HorizontalAlign="Center">
<asp:GridView ID="gvMeterData" runat="server" RowStyle-Wrap="false" CssClass="table table-striped"
GridLines="Both" OnRowDataBound="gvMeterData_RowDataBound" HeaderStyle-HorizontalAlign="Center">
</asp:GridView>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvMeterData" EventName="RowDataBound" />
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
我的加载弹窗如下。
var waitingDialog = waitingDialog || (function ($) {
'use strict';
// Creating modal dialog's DOM
var $dialog = $(
'<div class="modal fade" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-hidden="true" style="padding-top:15%; overflow-y:auto;">' +
'<div class="modal-dialog modal-sm">' +
'<div class="modal-content">' +
'<div class="modal-header"><h3 style="margin:0;"></h3></div>' +
'<div class="modal-body">' +
'<div class="progress progress-striped active" style="margin-bottom:0;"><div class="progress-bar" style="width: 100%"></div></div>' +
'</div>' +
'</div></div></div>');
return {
/**
* Opens our dialog
* @param message Custom message
* @param options Custom options:
* options.dialogSize - bootstrap postfix for dialog size, e.g. "sm", "m";
* options.progressType - bootstrap postfix for progress bar type, e.g. "success", "warning".
*/
show: function (message, options) {
// Assigning defaults
if (typeof options === 'undefined') {
options = {};
}
if (typeof message === 'undefined') {
message = 'Loading';
}
var settings = $.extend({
dialogSize: 'm',
progressType: '',
onHide: null // This callback runs after the dialog was hidden
}, options);
// Configuring dialog
$dialog.find('.modal-dialog').attr('class', 'modal-dialog').addClass('modal-' + settings.dialogSize);
$dialog.find('.progress-bar').attr('class', 'progress-bar');
if (settings.progressType) {
$dialog.find('.progress-bar').addClass('progress-bar-' + settings.progressType);
}
$dialog.find('h3').text(message);
// Adding callbacks
if (typeof settings.onHide === 'function') {
$dialog.off('hidden.bs.modal').on('hidden.bs.modal', function (e) {
settings.onHide.call($dialog);
});
}
// Opening dialog
$dialog.modal();
},
/**
* Closes dialog
*/
hide: function () {
$dialog.modal('hide');
}
};})(jQuery);
已编辑: 我认为更新面板可能有问题。不是吗?但是没有更新面板我也无法跟踪错误。当我再次查看浏览器中的检查元素时,控制台中也没有错误,例如缺少 .js 或任何东西。
提前致谢。
我无法弄清楚我上面的代码应该在哪里出错,我不能为此使用 AJAX 因为 Yocto OS 不支持它,因为我必须这样做此代码 运行 在那里。 所以最后我对我的解决方案进行了如下更改,我找到了显示加载的方式..
我找到了两种方法.. 1 在这个 link.. Loading In Popup..
另一种方法是我在页面开始处保留计时器和加载 'Loading Image',并在我的 gridview 通过禁用计时器完全绑定时停止加载图像。逻辑如下。
.aspx 页面..
<asp:Timer ID="Timer1" runat="server" OnTick="TimerTick" Interval="6000">
</asp:Timer><asp:Image ID="imgLoader" runat="server" ImageUrl="~/loading7.gif" />
.CS页面
protected void TimerTick(object sender, EventArgs e)
{
this.fillGrid();
Timer1.Enabled = false;
imgLoader.Visible = false;
}
这很好用。 但我仍在等待我的实际问题的答案。这就是滚动条熄灭或不工作的原因。