Member 11746885 Ответов: 1

Как отобразить новую запись, вставленную в gridview с помощью sqltabledependency в веб-приложении C#


Привет,

Я хочу использовать sqltabledependency для отображения новой записи, вставленной клиентом в Gridview.

Г-н гирдвью отображает данные , но не в реальном времени, я должен обновить свой браузер, чтобы увидеть новую добавленную запись.

Может ли кто-нибудь, пожалуйста, указать мне, как отображать значения в реальном времени в моем gridview.

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

using (var tableDependency = new SqlTableDependency<Prescription>(con, "PREHEAD"))
       {
           tableDependency.OnChanged += TableDependency_Changed;
           tableDependency.OnError += TableDependency_OnError;
           tableDependency.Start();
           using (SqlConnection sqlcon = new SqlConnection(con))
           {
               sqlcon.Open();
               SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM PREHEAD", sqlcon);

               DataTable dt = new DataTable();
               sqlDa.Fill(dt);
               GridView1.DataSource = dt;
               GridView1.DataBind();

           }
           tableDependency.Stop();

       }
   }

Gerry Schmitz

https://www.online-tech-tips.com/computer-tips/automatically-refresh-web-pages-in-browser/

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Так как код в ASP.NET выполняется только в течение времени, необходимого для запроса страницы и ее возврата, этот код не будет работать.

Кроме того, веб-серверы не могут передавать содержимое в браузер, поскольку это система "запрос-ответ".

Обновления должны были бы отслеживаться другим сервером и "толкаться" заинтересованным клиентам по какому-то другому каналу связи, например SignalR.

Ваш клиентский код также должен быть переписан, чтобы поддержать это.

Это будет намного больше работы и исследований с вашей стороны, чтобы понять, как это будет работать. Гугл для "ASP.NET SignalR" для учебных пособий и примеров.


Richard Deeming

"веб-серверы не могут передавать содержимое в браузер"

Веб-сокетов[^]
"С этим API, вы можете ... получайте управляемые событиями ответы без необходимости опрашивать сервер для получения ответа."

:)

Dave Kreskowiak

Через сокеты, да, но это все еще вне обычного HTTP-конвейера.

Richard Deeming

Технически, это все еще веб-сервер, отправляющий контент в браузер. :)

Dave Kreskowiak

Технически это зависит от вашего определения понятия "веб-сервер". :p