मैं रन बटन प्रदर्शित करने की कोशिश कर रहा हूं जो एक संग्रहीत प्रक्रिया को निष्पादित करता है, कि क्लिक पर छुपाता है और दूसरा बटन 'स्पिनर/लोडर' बटन दिखाता है जब तक निष्पादन पूर्ण रूप से चलाने के लिए वापस नहीं आ जाता है।

जब मैं रन पर क्लिक करता हूं, तो प्रक्रिया निष्पादित होती है, हालांकि मुझे बटनों के साथ कोई बदलाव नहीं दिखता है। जब मैं नीचे दिए गए कोड को हटाता हूं, तो संग्रहित प्रक्रिया समाप्त होने के बाद बटन बदल जाते हैं।

मेरे क्लिक इवेंट के शीर्ष पर मेरे पास है:

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;
        }
    }
}
0
Snooley 25 अक्टूबर 2019, 16:49

1 उत्तर

सबसे बढ़िया उत्तर

तत्वों में परिवर्तन पोस्टबैक के बाद केवल एक बार भेजे जाते हैं, जब आप उन्हें बदलते हैं तो तुरंत नहीं। आप जो करने की कोशिश कर रहे हैं उसे पूरा करने के लिए निश्चित रूप से (पोस्टबैक चलने के दौरान एक स्पिनर प्रदर्शित करें) आपको अपडेट प्रोग्रेस कंट्रोल

1
Longoon12000 25 अक्टूबर 2019, 17:09