2012-02-17 13 views
6

Este es el trato. Tener una aplicación web en funcionamiento usando ASP.NET WebForms con un backend C#. La cosa funciona bien, pero siempre estoy buscando mejorar, como principiante en esto. En este momento, para hacer frente a la búsqueda de un usuario a volver sin ningún resultado, utilizo la siguiente, y se preguntaba si había alguna manera más clara para hacerlo, para futuras referencias:Lanzar una ventana emergente cuando la búsqueda no arroja ningún resultado

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

Personalmente, me acaba de decir en lugar de la página que no había resultados (tal vez en una fuente roja por lo que se destaca), en lugar de una ventana emergente. –

+0

En realidad, no prefiero usar alertas cuando estoy hablando con un usuario a menos que intente abandonar mi página y debo confirmar que se perderán sus datos. La mayoría de las veces simplemente muestro un div con un bonito mensaje o un div animado que dice que no se encontraron resultados. – Songo

+1

@JustinSteranko - puede actualizar la ventana emergente usando un jquery popup, por ejemplo. Personalmente, me parecen molestas las ventanas emergentes y estoy de acuerdo con Mike Chrstensen –

Respuesta

0

Estoy de acuerdo con los que no utilizan ventanas emergentes, por lo que siempre podría hacer algo tan simple como tener un objeto de etiqueta en su página:

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

y luego ponga el texto de forma dinámica (o añadirlo como una propiedad para el código) y establecer la etiqueta de ser visible en la devolución de datos si no se encuentran resultados:

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 
} 

Pero hay un buen número extenso de formas podrías lograr algo como esto. En cuanto a su pregunta sobre el uso del .Count de la colección Enumerable, no hay nada que lo impida porque es perfectamente válido. La pregunta es, ¿qué método encuentras más legible?

0

si se incluye la interfaz de usuario jQuery de diálogo (http://jqueryui.com/demos/dialog/), sólo tiene que llamar a esto para crear un buen cuadro de diálogo:

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

personalmente prefiero para crear una función de ayuda para insertar el código JavaScript relevante en el página, y solo pasa los parámetros a la función para que no tenga que preocuparme por los detalles desordenados todo el tiempo.

Algo así como:

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

La muestra he utilizado también requiere jQuery y la biblioteca jGrowl disponibles here. Y en mi humilde opinión, los mensajes son bonitos. No son molestos, el usuario no necesita hacer clic en un botón para que desaparezcan, y se desvanecen después de la cantidad de tiempo especificada.

Pero estoy de acuerdo con Mike, que si no tiene ningún registro, debe usar las propiedades integradas de un GridView (EmptyDataRowStyle y EmptyDataRowText) para mostrar un mensaje de estilo 'no data matching your query'. Asumiendo que estás usando un GridView, eso es ...

+0

Eventualmente pasa a una vista de cuadrícula, pero primero a una lista desplegable como filtro secundario. Esto es para mantenerlo en línea con algunas de nuestras otras aplicaciones web a las que los usuarios finales están acostumbrados. –

0

Si ha decidido alertar al usuario a través de alerta, por favor, seguir adelante con efecto caja de luz ..

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

si está todavía desea seguir adelante con alerta tradicional, entonces, evidentemente, su fácil para usted para disparar hacia arriba al cargar la página en lugar de adjuntar a la misma secuencia de comandos ..

')" ....>

Porque si necesita algún cambio, entonces sólo tiene que alterar el javascript solo y que no necesita para construir proyecto de nuevo para probarlo ...

Espero que sea útil para usted ..

Nota: Estoy usando mis propios archivos DLL para representar el contenido es arriba de mayo de codificación requiere alteración porque se olvidó de codificaciones asp tradicionales .. :)

Cuestiones relacionadas