asp: UpdateProgress - подавление разрыва строки
-
09-06-2019 - |
Вопрос
Я начал работать с ASP.net AJAX (наконец-то ☺).и у меня есть панель обновления вместе с asp: UpdateProgress.Моя Проблема:UpdateProgress всегда вызывает разрыв строки, потому что он отображается как div-тег.
Есть ли какой-нибудь способ заставить его быть промежутком вместо этого?Я хочу отобразить его в той же строке, что и некоторые другие элементы управления, без необходимости использовать таблицу или даже содрогается абсолютное позиционирование в CSS.
Я застрял с ASP.net AJAX 1.0 и .net 3.0, если это имеет значение.
Решение
Я только что написал в блоге о своем собственном решении этой проблемы.http://www.joeaudette.com/solving-the-aspnet-updateprogress-div-problem.aspx
Что я сделал, так это позаимствовал элемент управления UpdateProgress из проекта Mono и изменил его, чтобы он отображался как span вместо div.Я также скопировал модифицированный ms-ajax javascript, связанный с элементом управления, и изменил его для переключения между display:inline и display: none вместо использования display: block
В моем сообщении есть ссылка на zip-файл, который содержит измененные файлы.
Другие советы
просто поместите ваш UpdateProgress внутри диапазона со стилем="position:absolute;"
У меня была такая же проблема.Нет простого способа сообщить UpdateProgress, чтобы он отображался встроенным.Вам было бы лучше создать свой собственный элемент UpdateProgress.Вы можете добавить прослушиватель BeginRequest и EndRequest для отображения и скрытия элемента, который вы хотите отобразить встроенным.Вот простая страница, которая показывает, как это сделать:
aspx
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="up1" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="lblTest" runat="server"></asp:Label>
<asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_OnClick" />
</ContentTemplate>
</asp:UpdatePanel>
<img id="loadingImg" src="../../../images/loading.gif" style="display:none;"/><span>Some Inline text</span>
<script>
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args) {
if (args.get_postBackElement().id == "btnTest") {
document.getElementById("loadingImg").style.display = "inline";
}
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
if (document.getElementById("loadingImg").style.display != "none") {
document.getElementById("loadingImg").style.display = "none";
}
});
</script>
</div>
</form>
cs
public partial class updateProgressTest : System.Web.UI.Page
{
protected void btnTest_OnClick(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000);
this.lblTest.Text = "I was changed on the server! Yay!";
}
}
Мое решение:В CSS
.progress[style*="display: block;"] {
display:inline !important;
}
И АСПИД
<asp:UpdateProgress class="progress" ID="UpdateProgress1" runat="server">
Лучший и самый простой способ - использовать UpdateProgress внутри UpdatePanel с span.Я протестировал это и корректно работаю в браузерах IE, FF, Chrome.вот так:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
..........
<span style="position:absolute;">
<asp:UpdateProgress ID="UpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<img alt="please wait..."src="/Images/progress-dots.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
</span>
</ContentTemplate>
</asp:UpdatePanel>
Мое решение состояло в том, чтобы обернуть это следующим образом...
<div class="load-inline">LOADER HERE</div>
И в моем CSS я использую...
.load-inline {display:inline-block}
Просто примените float:left
к вашей метке / текстовому полю и т.д.Вот так:
в заголовке:
<style type="text/css">
.tbx
{
float:left;
}
в теле:
<asp:TextBox CssClass="tbx" .... />
Вы можете сделать div встроенным следующим образом:
<div style="display:inline">stuff</div>
Однако я скептически отношусь к тому, что он будет отображать div для вас...Я не помню, чтобы у меня была такая проблема на моих страницах...