2012-02-20 2 views
1

В нашей компании мне нужно сохранить веб-страницу со списком открытых заказов для наших сотрудников.ASP.NET Как обновить данные?

В коде позади, я фильтр поиска на основе того, что элементы выбираются из выпадающего списка ddlList1 и TextBox txtSearch, вроде как это:

string sql 
if (!String.IsNullOrEmpty(ddlList1.SelectedValue) && 
    !String.IsNullOrEmpty(txtSearch.Text)) { 
    sql = string.Format("{0}={1}", ddlList1.SelectedValue, txtSearch.Text); 
} else { 
    sql = null; 
} 
GridView1.DataSource = db.Select(sql); 
GridView1.DataBind(); 

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

Я не уверен, как это сделать. Большая часть моего кода выполняется в Windows Forms.

До сих пор я нашел способ, чтобы обновить страницу с помощью META тега:

<meta http-equiv="refresh" content="600;Summary.aspx" /> 

Однако, это почти кажется, как будто WC3 рекомендует против использования refresh собственности:

Примечания : Значение «refresh» следует использовать осторожно, поскольку оно берет контроль над страницей от пользователя. Использование «refresh» приведет к сбою в рекомендациях W3C по доступности веб-контента.

Ref: HTML meta http-equiv

Итак, что является рекомендуемым способом, чтобы обновить свои данные?

Если это помогает, наш сервер является более старой машиной SQL 2000.

[Примечание: я нашел this question on SO, где кто-то предложил использовать AJAX UpdatePanel. Мой проект в настоящее время не имеет элементов управления AJAX. Могу ли я избежать сложности AJAX (загрузить последний пакет, установить его в VS2010, добавить его в список ссылок на Project, а затем указать AJAX на каждой странице, которая его использует) или просто укусить пулю?]

+0

Просто укусите пулю и опустите UpdatePanel с помощью таймера, установленного для обновления панели каждые 10 минут –

+0

Я уверен, что раньше я устанавливал AJAX на этой машине. Как мне добавить ссылку на проект? Как это называется? Я не смог найти что-либо в ссылках .NET под названием AJAX. – jp2code

+0

Добавьте UpdatePanel в свой набор инструментов. Он находится в System.Web.Extensions.dll в разделе C: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ –

ответ

1

Если вы на самом деле не делать ничего другого на этой странице, вы можете также просто оставить автоматическое обновление на. Да, это раздражает, и я его ненавижу, и я думаю, что этого не должно быть, но мне не нужно будет использовать этот сайт, и если это действительно то, чего хотят клиенты, это то, что получает клиент.

Вы также можете использовать элементы управления javascript или asp для принудительного обновления, кроме как через метатег HTTP, но он имеет точно такие же проблемы.

Если вы пройдете маршрут использования панелей обновлений, у вас есть несколько преимуществ. Во-первых, и, возможно, самое главное, если у вас много контента на странице, кроме обновленного gridview, вы не будете его повторно отображать. Это может (потенциально) быть значительным снижением загрузки сервера на основе того, как выглядит ваша целая страница, или это может быть минимальным. Затем у вас есть более тонкое (а также настраиваемое) визуальное влияние обновления для пользователя. Если они хотят, чтобы сайт просто мерцал и обновлялся, панель обновления будет делать это без изменения курсора, прядильщиков по всему и т. Д.(Вы также можете добавить такие вещи обратно, если вы хотите, чтобы это стало очевидным для пользователей, когда панель обновления отправляет обратно.)

+0

Просто любопытный ОП, какое решение вы в конечном итоге использовали? – Servy

1

Вы можете используйте ajax, чтобы получить данные с сервера и заполнить html-контейнер javascript на клиенте. Я не имею в виду обновленные панели microsoft, но xmlhttp.

+0

Возможно, но я не знаю, как выполнить любую из описанных вами вещей. Как я уже сказал, я обычно работаю над Windows Forms, а не с веб-страницами. – jp2code

+0

Это, скорее всего, будет намного больше, чем просто использование панелей обновлений, особенно потому, что это значительный объем данных со сложными требованиями к форматированию/отображению. Можно ли это сделать, да, но это менее предпочтительный вариант для этих обстоятельств. – Servy

0

Если вы ищете простой обходной путь, попробуйте следующее:

<script> 
    //Refreshing the page every 5 minutes 
    setInterval("location.reload()", 300000); 
</script> 
+0

Разве это не так, как '' (что я делаю сейчас)? – jp2code

+1

Нет, это не так, в то время как с мета вы используете атрибут html (так DOM), чтобы обновить страницу, с помощью скрипта вы делегируете обновление в событие javascript. Тот же подход используется на нескольких сайтах (новостные сайты для экземпляров). –

+0

@GiorgioMinardi Это не совсем то же самое, но он по-прежнему выполняет почти то же самое, он имеет точно такие же ошибки и плохое чувство пользователя и т. Д. Если HTTP-мета считается неуместным из-за плохой практики, это уже не так, менее приемлемым решением. Единственное эффективное отличие состоит в том, что метатег будет работать с отключенным JavaScript; это не будет. – Servy

Смежные вопросы