Я пытаюсь отобразить кнопку запуска, которая выполняет хранимую процедуру, которая при щелчке скрывается, и появляется другая кнопка, показывающая кнопку «спиннер / загрузчик», пока выполнение не завершится, возвращаясь к выполнению.
Когда янажмите кнопку выполнить, процедура выполняется, хотя я не вижу изменений с помощью кнопок. Когда я удаляю код внизу, кнопки меняются после завершения хранимой процедуры.
В верхней части моего события нажатия у меня есть:
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;
}
}
}