禁用ASP.net Ajax中的更新进度按钮
Disable button on update progress in ASP.net Ajax
嗨,我正在通过asp.net Ajax加载巨大的数据,点击网格视图中的按钮,显示更新进程的加载消息。。。在更新过程中,我不得不禁用我的BtnLoadReport按钮。
<td>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
<asp:UpdateProgress ID="updProgress"
AssociatedUpdatePanelID="UpdatePanel1"
runat="server" oninit="updProgress_Init" onprerender="updProgress_PreRender">
<ProgressTemplate>
<span style="color:green; font-style:italic;">Loading, please wait...</span>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div id="DemoId">
<asp:Button ID="BtnLoadReport" runat="server" onclick="BtnLoadReport_Click"
Text="LoadReport" Width="176px" ClientIDMode="Static" OnClientClick="return clickOnLoadReport();" />
</div>
<asp:GridView ID="GridView1" runat="server" Height="170px"
onselectedindexchanged="GridView1_SelectedIndexChanged" Width="438px">
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnLoadReport" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
我的脚本禁用按钮
<script type="text/javascript">
var updateProgress = null;
function clickOnLoadReport() {
// This will disable all the children of the div
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack()==false) {
var nodes = document.getElementById("DemoId").getElementsByTagName('*');
for (var i = 0; i < nodes.length; i++) {
nodes[i].disabled = true;
// nodes[i].off("click");
}
}
}
</script>
但它并没有禁用我的按钮很长时间,它只是禁用它几秒钟
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(this.BtnLoadReport);
}
protected void BtnLoadReport_Click(object sender, EventArgs e)
{
// System.Threading.Thread.Sleep(3000);
UpdatePanel1.Update();
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"C'Data.Xml");
GridView1.DataSource = dataSet.Tables[0];
GridView1.DataBind();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void updProgress_Init(object sender, EventArgs e)
{
BtnLoadReport.Enable = false;
}
protected void updProgress_PreRender(object sender, EventArgs e)
{
BtnLoadReport.Enable
= true;
}
上面的这件事我试图禁用我的按钮BtnLoadReport更新进度仍然不起作用提前感谢
function clickOnLoadReport() {
var requestManager = Sys.WebForms.PageRequestManager.getInstance();
requestManager.add_initializeRequest(CancelPostbackForSubsequentSubmitClicks);
function CancelPostbackForSubsequentSubmitClicks(sender, args) {
if (requestManager.get_isInAsyncPostBack() &
args.get_postBackElement().id == 'BtnLoadReport') {
args.set_cancel(true);
document.getElementById("BtnLoadReport").setAttribute("disabled", "disabled");
//alert('A previous request is still in progress that was issued on clicking ' + args.get_postBackElement().id);
}
}
}
我对javascript函数进行了更改,它解决了我的问题
相关文章:
- 选择单选按钮时显示更新按钮
- 如何更新按钮内部的文本,每行重复一次
- 如何在jQuery的.on()方法中动态更新按钮的ID选择器
- 当我点击更新按钮时,它赢得了't更改/更新(CodeIgniter,更新多行)
- 单击“更新”按钮后,请求不以“放置”形式进行,而是以“POST”形式发送
- 带有更新按钮.js D3 将新数据添加到旧数据而不是替换旧数据
- 如何在 Meteor 中使用多个输入字段和单个更新按钮更新文档
- 更新按钮文本和其他问题
- JavaScript OnClient点击破坏RadGrid插入/更新按钮在web表单上提交行为
- 表单提交/更新按钮
- 使用ajax和data-*属性更新按钮
- jQuery -数据库访问失败后的更新按钮图标
- 使用JavaScript更新按钮上的文本
- 通过inputfield更新按钮文本
- ExtJS -更新按钮时,编辑一行调用函数
- 更新按钮id
- Ajax:将复选框功能转换为Wordpress中的输入字段和更新按钮
- Jquery克隆和更新按钮图标
- 为所有值创建一个更新按钮
- 一个基于抽动流状态更新按钮颜色的函数