2012-02-17 15 views
6

Oto umowa. Czy działająca aplikacja internetowa korzystająca z WebForms ASP.NET z zapleczem C#. Rzecz działa dobrze, ale zawsze staram się ją poprawić, jako początkujący w tej dziedzinie. W tej chwili do czynienia z wyszukiwania użytkownik wróci bez rezultatów, ja wykorzystać następujące, i zastanawiałem się, czy istnieje jakiś sposób czystsze to zrobić, do wykorzystania w przyszłości:Rzucanie wyskakującego okienka, gdy wyszukiwanie nie daje wyników

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(); 
} 
+9

Osobiście bym to raczej strona powiedzieć, że nie było wyniki (może w czerwonej czcionce, więc się wyróżnia), a nie wyskakujące okienko. –

+0

Właściwie nie wolę używać alertów, gdy rozmawiam z użytkownikiem, chyba że próbuje on opuścić moją stronę i muszę potwierdzić, że jego dane zostaną utracone. W większości przypadków po prostu pokazuję element div z ładną wiadomością lub animowanym div, który mówi, że nie znaleziono wyników. – Songo

+1

@JustinSteranko - można ładować wyskakujące okienko przy użyciu np. Wyskakującego okienka jquery. Osobiście uważam wyskakujące okienka za irytujące i zgadzam się z Mike'em Chrstensenem –

Odpowiedz

0

Zgadzam się z wykorzystaniem nie pop-upów, więc zawsze można zrobić coś tak prostego jak o przedmiot Label na swojej stronie:

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

a następnie ustaw tekst dynamicznie (lub dodać ją jako własność do kodu) i ustaw etykietę, aby były widoczne na odświeżenie strony jeśli nie znaleziono żadnych wyników:

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 
} 

Ale istnieje dość znaczna liczba sposobów możesz osiągnąć coś takiego. Jeśli chodzi o twoje pytanie dotyczące korzystania z .Count z kolekcji Enumerable - nic nie powstrzyma cię od robienia tego, ponieważ jest to całkowicie poprawne. Pytanie brzmi, która metoda jest bardziej czytelna?

0

jeśli zawierają ui jquery dialogowe (http://jqueryui.com/demos/dialog/), można po prostu nazwać to, aby stworzyć miłą okno dialogowe:

$('<div>message</div>').dialog({autoOpen:true,title:'Error'}); 
0

Osobiście wolę aby utworzyć funkcję pomocnika do wprowadzania istotnych JavaScript w polu stronę i tylko przekazuj parametry do funkcji, aby za każdym razem nie musiałem się martwić o bałaganiarskie szczegóły.

Coś jak:

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);    
} 

Próbka Użyłem również wymaga jQuery i bibliotekę jGrowl dostępne here. A wiadomości IMHO są ładne. Są dyskretne, użytkownik nie musi klikać przycisku, aby odejść, i znikną po upływie określonego czasu.

Ale zgadzam się z Mikem, że jeśli nie masz żadnych rekordów, powinieneś po prostu użyć wbudowanych właściwości GridView (EmptyDataRowStyle i EmptyDataRowText), aby wyświetlić komunikat stylu "brak danych pasujących do twojego zapytania". Zakładając, że używasz GridView w ogóle, to jest ..

+0

W końcu przechodzi do widoku siatki, ale najpierw do listy rozwijanej jako filtra pomocniczego. Ma to na celu utrzymanie zgodności z niektórymi z naszych innych aplikacji internetowych, do których są przyzwyczajeni użytkownicy końcowi –

0

Jeśli zdecydowaliśmy ostrzega użytkownika za pomocą alertu to proszę iść do przodu z mocą światła box ..

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

jeśli nadal chce iść do przodu z tradycyjnym wpisu to oczywiście jego łatwe dla Ciebie żeby go odpalić na stronie obciążenia zamiast dołączenie skryptu do niego ..

„)” ....>

Bo jeśli wymagają żadnych zmian, a następnie po prostu trzeba zmienić sam javascript i nie trzeba budować ponownie przetestuj to ...

Mam nadzieję, że będzie dla ciebie przydatny ..

Uwaga: używam moje własne DLL do renderowania zawartości powyżej mogą więc kodowanie wymaga zmiany, bo nie zapomnieć tradycyjne codings asp .. :)

Powiązane problemy