Выдает всплывающее окно, когда поиск не дает результатов - PullRequest
6 голосов
/ 17 февраля 2012

Вот сделка. Иметь работающее веб-приложение, использующее ASP.NET WebForms с бэкэндом C #. Все работает хорошо, но я всегда стремлюсь к улучшению, как новичок в этом деле. Прямо сейчас, чтобы иметь дело с поиском пользователя, возвращающимся без результатов, я использовал следующее, и мне было интересно, есть ли какой-нибудь более чистый способ сделать это для дальнейшего использования:

DataClass data = new DataClass();
var searchresults = data.GetData(searchBox.Text);
int datanumber = searchresults.Count();
if (datanumber == 0)
{
    ClientScript.RegisterStartupScript(this.GetType(), "alert", "javascript:alert('There were no records found to match your search');", true);
}
else
{
    DropDownList1.Visible = true;
    DropDownList1.Items.Clear();
    DropDownList1.DataSource = searchresults;
    DropDownList1.DataBind();
}

Ответы [ 5 ]

0 голосов
/ 19 мая 2012

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

http://www.designyourway.net/blog/resources/30-efficient-jquery-lightbox-plugins/

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

') "....>

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

Надеюсь, он вам пригодится ..

Примечание: я использую свои собственные библиотеки DLLдля визуализации контента, поэтому приведенное выше кодирование может потребовать изменений, потому что я забыл традиционные кодировки asp ..:)

0 голосов
/ 24 апреля 2012

Я согласен с тем, что всплывающие окна не используются, поэтому вы всегда можете сделать что-то столь же простое, как наличие объекта Label на своей странице:

<asp:Label runat="server" id="lblResultMsg" ForeColor="Red" Visible="False" />

И затем установить текст динамически (или добавить его в качестве свойства).к коду) и установите метку, которая будет отображаться при обратной передаче, если результаты не будут найдены:

if (datanumber == 0)
{
    lblResultMsg.Text = "There were no records found to match your search.";
    lblResultMsg.Visible = true;
}
else
{
    lblResultMsg.Text = "";
    lblResultMsg.Visible = false;

    // do your data binding
}

Но есть довольно много способов достичь чего-то подобного.Относительно вашего вопроса об использовании .Count из коллекции Enumerable - ничто не мешает вам сделать это, так как это совершенно правильно.Вопрос в том, какой метод вы считаете более читабельным?

0 голосов
/ 17 февраля 2012

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

Что-тонапример:

public static void GrowlMessage(System.Web.UI.Control pageControl, string header = "", string message = "", bool sticky = false, string position = "top-right", string theme = "", bool closer = true, int life = 8)
{
    string _js = "$.jGrowl('" + HttpContext.Current.Server.HtmlEncode(message) + "', { header:'" + header + "', sticky:" + sticky.ToString().ToLower() + ", position: '" + position + "', theme: '" + theme + "', closer: " + closer.ToString().ToLower() + ", life:" + life * 1000 + "});";
    ScriptManager.RegisterStartupScript(pageControl, pageControl.GetType(),"Growl",_js, true);            
}

Используемый мной образец также требует jQuery и доступную библиотеку jGrowl здесь .И ИМХО сообщения симпатичные.Они ненавязчивы, пользователю не нужно нажимать кнопку, чтобы заставить их уйти, и они исчезают через указанное вами время.

Но я согласен с Майком, что если у вас нетзаписи, вы должны просто использовать встроенные свойства GridView (EmptyDataRowStyle и EmptyDataRowText), чтобы отобразить сообщение в стиле «нет данных, соответствующих вашему запросу».Предполагая, что вы вообще используете GridView, то есть ..

0 голосов
/ 09 апреля 2012

Когда дело доходит до отзывов пользователей, Impromptu - мой друг.На сайте Аарона Голденталя есть отличная ASP.NET-версия Impromptu: http://www.aarongoldenthal.com/post/2009/11/11/Using-jQuery-Impromptu-With-ASPNET.aspx

0 голосов
/ 17 февраля 2012

если вы включаете диалоговое окно jquery ui (http://jqueryui.com/demos/dialog/),, вы можете просто вызвать его, чтобы создать красивое диалоговое окно:

$('<div>message</div>').dialog({autoOpen:true,title:'Error'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...