nar86 Ответов: 2

Как показать индикатор выполнения с помощью нажатия кнопки


у меня есть одна кнопка под названием "отправить".

Когда я нажимаю кнопку в gridview records, она показывает. но я хочу, чтобы при нажатии на кнопку Я хотел показать индикатор выполнения "загрузка, пожалуйста, подождите", а затем в gridview будут отображаться записи.

Как это сделать в c#?

Что я уже пробовал:

protected void btnsubmit_Click(object sender, EventArgs e)
        {

         String strConnString = 
         ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                    SqlConnection con = new SqlConnection(strConnString);
               SqlCommand cmd = new SqlCommand("select * from tbl_trasnaction", con);
                    con.Open();
                    SqlDataAdapter da = new SqlDataAdapter();
                    DataSet ds = new DataSet();
                    da.SelectCommand = cmd;
                    da.Fill(ds);
                    gridview.DataSource = ds;
                    gridiew.DataBind();
        }

2 Ответов

Рейтинг:
2

Leo Chapiro

Вам нужно использовать так называемую многопоточность.
Взгляните на это пример :

Пример. Пожалуйста, добавьте элемент управления ProgressBar в вашу программу Windows Forms, дважды щелкнув на записи ProgressBar в панели инструментов. Для этого примера нам также нужен BackgroundWorker—добавьте его, а затем создайте необходимые обработчики событий.

using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Start the BackgroundWorker.
            backgroundWorker1.RunWorkerAsync();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 1; i <= 100; i++)
            {
                // Wait 100 milliseconds.
                Thread.Sleep(100);
                // Report progress.
                backgroundWorker1.ReportProgress(i);
            }
        }

        private void backgroundWorker1_ProgressChanged(object sender,
            ProgressChangedEventArgs e)
        {
            // Change the value of the ProgressBar to the BackgroundWorker progress.
            progressBar1.Value = e.ProgressPercentage;
            // Set the text.
            this.Text = e.ProgressPercentage.ToString();
        }
    }
}


Vincent Maverick Durano

Это, вероятно, будет работать для Windows forms. Но я думаю, что операция уже началась ASP.NET веб-формы.

Leo Chapiro

Почему ты так думаешь? ОП спрашивает: "Как это сделать в c#?"

Vincent Maverick Durano

потому что GridView-это ASP.NET серверное управление WebForms, а не windows.

Leo Chapiro

Вы можете использовать GridView в WPF: GridView в WPF

Рейтинг:
2

Vincent Maverick Durano

Один из подходов заключается в использовании jQuery или Javascript для отключения любых / всех элементов на Вашей странице после нажатия кнопки и отображения вашего изображения. Вот краткий пример:

<div id="divWait" style="position:absolute;left:50%; top:50%; margin:-100px 0 0 -150px; display:none;">
      <div style="text-align:center; width:300px; height:70px; background-color:#000; color:#fff;">
              Processing....
              <br/>
              <!--Your GIF image here-->
      </div>
</div>

<div id="divHolder">
      <!--Put your content here and Gridview-->
</div>
<asp:LinkButton ID="lnkSave" runat="server" CssClass="lnkSave" />

<script type="text/javascript">
    $(".lnkSave").live("click",function(){
        $("#divHolder").attr('disabled',true);
        $("#divWait").css({'display': 'block'});
    });
</script>


Другим примером может быть использование элемента управления UpdatePanel + UpdateProgress: вот пример отображения индикатора выполнения при запуске некоторых действий из gridview: http://www.aspsnippets.com/Articles/Add-Edit-Update-Records-in-GridView-using-Modal-Popup-in-ASP.Net.aspx а вот пример того, как показывать индикатор индикатора выполнения во всех операциях ajax: http://geekswithblogs.net/rashid/archive/2007/08/24/Showing-Modal-Progress-Dialog-in-all-Ajax-Operation.aspx