单击按钮时更改更新进度文本
本文关键字:文本 更新 按钮 单击 | 更新日期: 2023-09-27 18:32:46
我有这个,但它不起作用...我错过了什么吗?
例如,我需要在单击按钮时更改 UpdateProgess 中的文本。
这是我的ascx
:
<asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="upFormulario">
<ProgressTemplate>
<div style="position: fixed; text-align: center; height: 100%; width: 100%; top: 0; right: 0; left: 0; z-index: 9999999; background-color: #000000; opacity: 0.7;">
<%--<span id="lblInfo" style="border-width: 0px; position: fixed; padding: 50px; background-color: #FFFFFF; font-size: 36px; left: 40%; top: 40%;">Loading...</span>--%>
<asp:Label id="lblInfo" Text="..." runat="server" style="border-width: 0px; position: fixed; padding: 50px; background-color: #FFFFFF; font-size: 36px; left: 40%; top: 40%;" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="upFormulario" runat="server">
...
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="100%" align="right" nowrap="nowrap">
<asp:Button runat="server" Text="Next" ID="btnSave" OnClick="cmdSaveDraft_Click" class="ms-ButtonHeightWidth" />
</td>
</tr>
</tbody>
</table>
...
</asp:UpdatePanel>
这是我的代码ascx.cs
protected void cmdSaveDraft_Click(object sender, EventArgs e)
{
Label progressMessageLabel = this.UpdateProgress2.FindControl("lblInfo") as Label;
if (progressMessageLabel != null)
{
progressMessageLabel.Text = "Saving...";
}
lblAccion = "Loading...";
int iControl = this.ValidateCtrl();
if (iControl == 1)
{
return;
}
}
谢谢!
您的更新进度位于 UpdatePanel 外部,但您的按钮位于更新面板内。
当您使用更新面板时,更新面板中的所有控件都将在 ajax 中工作,它们不会执行真正的发布,而是执行 ajax 请求。在这种情况下,只能从更新面板中的控件触发的事件更新更新面板中的控件。
恢复,如果您希望它工作,请在更新面板中添加更新进度控件,它将起作用。
如果单击的按钮启用了 Post,那么我认为标签会在下次刷新页面时反映文本更改。(按钮的单击代码在服务器上执行,而不是在客户端上执行。所以它需要页面加载来显示标签的新状态)
如果你想在不刷新的情况下更改标签文本,你需要使用 Javascript。
string script = "<script type='"text/javascript'"> document.getElementById("LABEL").text = 'Loading...'; </script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", script);
我还没有测试过这个,但理论上它应该允许您更改标签的值,而无需发布页面。注意 - 您可能必须禁用控件的发布。不确定。
也许这个答案会有所帮助:
public void bw_Convert_DoWork(object sender, DoWorkEventArgs e)
{
e.Result = e.Argument;
for (int i = 0; i < fTable.Rows.Count; i++)
{
try
{
SqlCommand cmd = new SqlCommand("INSERT INTO TBL_CDR_ANALYZER (LNG_UPLOAD_ID, DAT_START, LNG_DURATION, INT_DIRECTION, INT_CALL_DATA_TYPE, 'n" +
"TXT_TARGET_NUMBER, TXT_OTHER_PARTY_NUMBER, TXT_TARGET_IMSI, TXT_TARGET_IMEI, TXT_TARGET_CELL_ID, TXT_ROAMING_NETWORK_COMPANY_NAME) VALUES 'n" +
"(@UPLOAD_ID, @START_DATE, @DURATION, @DIRECTION, @CALL_TYPE, @TARGET_NUMBER, @OTHER_PARTY_NUMBER, @IMSI, @IMEI, @CELL_ID, @ROAMING_NAME)", sqlCon);
cmd.Parameters.Add("@UPLOAD_ID", SqlDbType.Int).Value = 1;
cmd.Parameters.Add("@START_DATE", SqlDbType.DateTime).Value = fTable.Rows[i]["CallDate"];
cmd.Parameters.Add("@DURATION", SqlDbType.Int).Value = fTable.Rows[i]["CallDuration"];
cmd.Parameters.Add("@DIRECTION", SqlDbType.Int).Value = GetCallDirection(fTable.Rows[i]["CallDirection"].ToString());
cmd.Parameters.Add("@CALL_TYPE", SqlDbType.Int).Value = GetCallType(fTable.Rows[i]["CallType"].ToString());
cmd.Parameters.Add("@TARGET_NUMBER", SqlDbType.VarChar, 25).Value = fTable.Rows[i]["TargetNo"];
cmd.Parameters.Add("@OTHER_PARTY_NUMBER", SqlDbType.VarChar, 25).Value = fTable.Rows[i]["OtherPartyNo"];
cmd.Parameters.Add("@IMSI", SqlDbType.VarChar, 50).Value = fTable.Rows[i]["IMSI"];
cmd.Parameters.Add("@IMEI", SqlDbType.VarChar, 50).Value = fTable.Rows[i]["IMEI"];
cmd.Parameters.Add("@CELL_ID", SqlDbType.VarChar, 50).Value = fTable.Rows[i]["CellID"];
cmd.Parameters.Add("@ROAMING_NAME", SqlDbType.NVarChar, 255).Value = fTable.Rows[i]["RoamingCompany"];
sqlCon.Open();
cmd.ExecuteNonQuery();
sqlCon.Close();
}
catch (SqlException ex)
{
}
finally
{
sqlCon.Close();
}
bw_Convert.ReportProgress((100 * i) / fTable.Rows.Count);
Label1.Invoke((MethodInvoker)delegate {
Label1.Text = i.ToString() + "Files Converted";});
}
}