繁体   English   中英

C# 单击时隐藏和显示按钮

[英]C# hide and show buttons on click

我正在尝试显示执行存储过程的运行按钮,单击时会隐藏并显示另一个按钮,显示“微调器/加载器”按钮,直到执行完成返回运行。

当我单击运行时,尽管我没有看到按钮有任何变化,但程序会执行。 当我删除底部的代码时,存储过程完成后按钮会发生变化。

在我的点击事件的顶部,我有:

btnRun.Visible = false;
LoadButton.Visible = true; 

在底部:

LoadButton.Visible = false;
btnRun.Visible = true;

我猜这与回邮有关,这附近有吗?

编辑:这是我的点击事件 -

protected void Run_Click(object sender, EventArgs e)
{
    using (SqlConnection con = new SqlConnection(dbString))
    using (SqlCommand cmd = new SqlCommand("dbo.ExecuteJob", con))
    {
        try
        {
            btnRun.Visible = false;
            LoadButton.Visible = true;
            System.Threading.Thread.Sleep(100);

            string JobName = "CTIOM: " + ddlJob.SelectedItem.Text;

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@job_name", JobName);

            SqlParameter statusParameter = new SqlParameter
            {
                ParameterName = "@returnStatus",
                SqlDbType = SqlDbType.Int,
                //Size = 255,
                Direction = ParameterDirection.Output
            };

            SqlParameter messageParameter = new SqlParameter
            {
                ParameterName = "@returnMessage",
                SqlDbType = SqlDbType.VarChar,
                Size = 1000,
                Direction = ParameterDirection.Output
            };

            SqlParameter durationParameter = new SqlParameter
            {
                ParameterName = "@returnRunDuration",
                SqlDbType = SqlDbType.VarChar,
                Size = 8,
                Direction = ParameterDirection.Output
            };

            cmd.Parameters.Add(statusParameter);
            cmd.Parameters.Add(messageParameter);
            cmd.Parameters.Add(durationParameter);

            con.Open();

            IAsyncResult result = cmd.BeginExecuteNonQuery();
            while (!result.IsCompleted)
            {                        
                System.Threading.Thread.Sleep(100);
            }
            cmd.EndExecuteNonQuery(result);

            string statusMessage = statusParameter.Value.ToString();
            lblStatus.Visible = true;
            lblStatus.Text = statusMessage;

            string returnMessage = messageParameter.Value.ToString();
            lblMessage.Visible = true;
            lblMessage.Text = returnMessage;
        }

        catch (SqlException ex)
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message.ToString() + "')", true);
            return;
        }

        finally
        {
            con.Close();

            LoadButton.Visible = false;
            btnRun.Visible = true;
        }
    }
}

对元素的更改仅在回发后发送一次,而不是在您更改它们时立即发送。 很确定要完成您正在尝试做的事情(在回发运行时显示微调器),您将需要使用UpdateProgress 控件之类的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM