【问题标题】:Change UpdateProgress text on button click单击按钮时更改 UpdateProgress 文本
【发布时间】:2016-02-07 04:56:01
【问题描述】:

我有这个,但它不起作用...我错过了什么吗?

例如,我需要在单击按钮时使用 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;
    }
}

谢谢!

【问题讨论】:

  • 您遇到的错误是什么? cmdSaveDraft_Click 在您的视图中引用的位置在哪里?我认为您的问题需要更多细节。
  • 没有错误,我需要在单击按钮时更改 lblInfo 标签内的文本。很明显,更新面板中引用了 cmdSaveDraft_Click。
  • 你说“很明显”,但我看不到代码...
  • 我没有写 ir 因为我觉得没必要
  • 你可以使用javascript

标签: c# asp.net sharepoint


【解决方案1】:

您的 UpdateProgress 在 UpdatePanel 之外,但您的按钮在更新面板内。

当您使用更新面板时,更新面板内部的所有控件都将在 ajax 中工作,它们不会进行真正的发布,而是 ajax 请求。在这种情况下,只有更新面板内的控件可以从更新面板内的控件触发的事件中更新。

正在恢复,如果您希望它工作,请在更新面板中添加更新进度控件,它就会工作。

【讨论】:

  • 哦,是的!那是问题!谢谢!!
【解决方案2】:

如果单击的按钮启用了发布,那么我会认为标签会在下次刷新页面时反映文本更改。 (按钮的点击代码是在服务器上执行的,而不是在客户端上。所以它需要页面加载来显示标签的新状态)

如果你想改变标签文本而不刷新,你需要使用Javascript。

string script = "<script type=\"text/javascript\"> document.getElementById("LABEL").text = 'Loading...'; </script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", script);

我没有对此进行测试,但理论上它应该允许您更改标签的值,而无需发布页面。 注意 - 您可能必须禁用控件的帖子。不确定。

【讨论】:

  • 它不工作。我需要的是使用 UpdateProgress 更改文本以在执行操作时显示它,例如:加载、保存、删除...当单击选定按钮时
【解决方案3】:

也许this answer 可以帮忙:

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";});                 
    }    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2019-07-08
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多