单击按钮时更改更新进度文本

本文关键字:文本 更新 按钮 单击 | 更新日期: 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";});                 
    }    
}