Existe siempre la necesidad de realizar un Select Distinct a un DataTable cuando las filas están repetidas. En esta ocasión les comparto una nueva solución en .Net C# que permite devolver los resultados con mas de una columna.
En una publicación anterior, pudimos Validar sólo númerosenJavascript, la cual nos ha permitido solucionar muchos inconvenientes.
En esta ocasión les quiero compartir una validación de solo números mucho mas completa, es decir contempla navegadores como Chrome, Internet Explorer (IE) y Firefox
A continuación les muestro el código, espero que les ayude.
AJAX, anteriormente llamado "Atlas", acrónimo de Asynchronous JavaScript y XML, que simplemente, es una manera o técnica de transferir datos entre el servidor y el cliente sin necesidad de enviar toda la página, y creando así una devolución de datos completa. Esto permite obtener una mejor experiencia para el usuario, ya que carga el contenido dinámico se puede hacer en un segundo plano, sin refrescante y redibujar toda la página.
Cuando se implementa AJAX en nuestros proyectos, obtenemos aplicaciones que funcionan mucho más rápido, ya que las interfaces de usuario se pueden actualizar por partes sin tener que
actualizar toda la página. Por ejemplo, al diligenciar un formulario que se captura en un sitio web, con AJAX se puede actualizar solo la parte en la que se selecciona la ciudad de residencia
sin tener que actualizar toda la página web completa.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""
En un proyecto proyecto Asp.Net con controles AJAX (ModalPopup) en Internet Explorer 10 (IE10) se me presento la siguiente inconsistencia "Solution for IE10 error: Sys.ArgumentOutOfRangeException: Value must be an integer asp.net", la solución que se encontró es agregar la siguiente linea, ya sea en la Master.page del proyecto o en el encabezado de mi pagina .aspx.
La etiqueta meta X-UA-Compatible permite elegir qué versión de Internet Explorer la página se debe representar. Es utilizado por Internet Explorer 8 para especificar si una página se debe representar como IE 7 (vista de compatibilidad) o IE 8 (normas vista).
Las opciones que tiene para el contenido (content) son:
"IE=5"
"IE=EmulateIE7"
"IE=7"
"IE=EmulateIE8"
"IE=8"
"IE=EmulateIE9"
"IE=9"
"IE=edge"
Se utiliza la etiqueta meta X-UA-Compatible en las páginas web donde se sospecha que Internet Explorer 10 intentará representar la página en una forma incorrecta. Una forma de conocer bajo que modo de compatibilidad se ejecuta una pagina aspx en asp.net puede ayudarlos a solucionar muchos inconvenientes.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""
Para consumir un Web Service en Visual Studio debemos seguir los siguientes pasos, es muy importante para este ejemplo conocer como Crear Web Service con C# en Visual Studio. Para iniciar a Consumir un Web Service en C#, debemos seguir los siguientes pasos:
Abrimos Visual Studio, seleccionamos en menú File - New Web Site... como lo muestra la siguiente imagen:
Luego nos aparece la siguiente imagen, seleccionamos la ubicación del proyecto desde el botón Browser y damos clic sobre el boton OK:
Seguidamente se crea el proyecto solución como se muestra en la siguiente imagen:
Ahora, empezamos agregar la Referencia Web de nuestro Web Service que deseamos consumir. Primero damos clic derecho en nuestro proyecto y damos clic sobre Add Web Reference...
Luego nos aparece la siguiente ventana, aquí nos permite colocar la Url del Web Service que deseamos consumir, en la opción URL y damos clic en el boton Go, como se muestra en la siguiente imagen:
Al dar clic en el botón Go, nos aparece un nombre de Web Service por default si es necesario lo cambiamos, para nuestro ejemplo colocamos WSSuma:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
//Se instancia en variable local, referencia al web services
WSSuma.Service wsWeb = new WSSuma.Service();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSumar_Click(object sender, EventArgs e)
{
/****************************************************************************************************
* Parametrizar en BD la Url del WebServices ademas proxy y credenciales si las llegas a necesitar
* 2. Para nuestro ejemplo solo le vamos a pasar el Url del web services apuntando al servidor web
* donde se enceuntra alojado
* 3. Anexo codigo para credenciales y proxy
*
* System.Net.WebProxy proxy = new System.Net.WebProxy("IpProxy");
* proxy.Credentials = new System.Net.NetworkCredential("userProxy","passProxy","dominioProxy");
****************************************************************************************************/
try
{
wsWeb.Url = "http://10.10.174.16/Appwebservices/service.asmx";
//Se invoca metodo Suma, se pasan los valores A y B y el resultado se muestra
lblSuma.Text = wsWeb.Suma(txtVA.Text.Trim(), txtVB.Text.Trim());
}
catch (Exception ex)
{
lblSuma.Text = ex.Message;
}
}
}
En el código anterior la linea No. 11 (WSSuma.Service wsWeb = newWSSuma.Service();)donde se instancia el Web Service es muy importante ya que nos va ha permitir acceder a los métodos del Web Service.
Finalmente nuestro ejemplo ya en ejecución quedaría de la siguiente forma:
A continuación vamos a ver la creación de un Web Services con C# en Visual Studio .Net, que tendrá un método llamado Suma. Para este ejemplo utilizamos Visual Studio .Net 2008 pero puede aplicar para .Net 2010. Primero creamos un nuevo proyecto en el menú File - New - Web Site..., como nos muestra la siguiente imagen:
Luego seleccionamos el tipo de proyecto que para nuestro ejemplo es Asp.NET Web Services, buscamos una ubicación para guárdalo con el botón Browse... y damos clic en el botón Ok.
Ya creado el proyecto, el explorador de soluciones nos muestra la siguiente estructura de archivos.
Código fuente C#
En el código de .Net, se crea automáticamente una estructura básica que podemos modificar de acuerdo a nuestras necesidades. El atributo [WebMethod] nos indica si el método creado sera expuesto como Web Service, permitiendo que pueda ser consumido por otras aplicaciones,esto lo podemos ver claramente en la siguiente imagen.
Para crear nuestro método Suma reemplazamos el método HelloWorld por el siguiente código:
//Creacion de Metodo Suma que tiene el web Services
//Los metodos se identifican con
[WebMethod]
public string Suma(string Valor1, string Valor2) {
int nSuma = 0;
try
{
nSuma = Convert.ToInt32(Valor1) + Convert.ToInt32(Valor2);
}
catch
{
return "Uno de los valores digitados es incorrecto, por favor verifique.";
}
return nSuma.ToString();
}
Explicando un poco el código anterior, el método Suma recibe dos parámetros (para este ejemplo son string pero podrían ser enteros - int) y la suma de ellos es retornado como un string, si ocurre una excepción ésta es controlada a través de try...catch.
Cuando ejecutamos el código anterior la respuesta en el explorador de Internet aparece nuestro método Suma, luego al dar clic en él, nos solicita los dos parámetros que le declaramos.
Finalmente luego de digitar los valores y dar clic sobre el botón Invocar, el método retorna la siguiente respuesta en formato Xml.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""
En este artículo voy a mostrar cómo se puede desactivar cortar, copiar y pegar en control cuadro de texto de asp.net con javascript o jQuery.
Aquí está el código por el cual podemos realizar esta funcionalidad.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Stylingfrorm.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Desactivar Cortar, Copiar y Pegar en Textbox Usando jQuery, JavaScript en Asp.Net</title> </head>
<body >
<form id="form1" runat="server">
<div>
<h3>Desactivar Cortar, Copiar y Pegar</h3><br />
<asp:TextBox ID="TextBox1" runat="server" Width="300px" oncopy="return false;" onpaste="return false;" oncut="return false;"></asp:TextBox>
</div>
</form>
</body>
</html>
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""
En un post anterior mostramos la forma de Validar sólo números o letras con Javascript, en éste podemos ver ambas validaciones es acción, es decir como Validar solo números y letras en el mismo campo.
Esto lo podemos lograr a través del siguiente código JavaScript, mostrado a continuación:
Validar sólo números y letras
//Función que permite solo Números
function SoloNumeroLetras() {
if ((event.keyCode < 48) || (event.keyCode > 57) && (event.keyCode < 65) || (event.keyCode > 90) && (event.keyCode < 97) || (event.keyCode > 122))
event.returnValue = false;
}
Luego, para llamar la función en nuestra pagina web, solo basta con invocarlo en el evento onkeypress de la caja de texto así:
<input id="txAlfanumerico" name="txAlfanumerico" onkeypress="SoloNumeroLetras()" type="text" />
Si queremos que los códigos anteriores, no estén incluidos dentro de la pagina web, podemos crear un archivo .js llamado Validaciones.js, luego copiamos y pegamos el código anterior en este archivo, guardamos y finalmente agregamos la siguiente línea, arriba del tag </head> , de la pagina donde se desee llamar la función:
Ejemplo: "<script src="../Scripts/Validaciones.js" type="text/javascript"></script>"
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0012: The type 'Global' is defined in an assembly that is not referenced. You must add a reference to assembly 'App_Code.77wcm7ag, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
Source Error:
Line 83: } Line 84: Line 85: protected ASP.global_asax ApplicationInstance { Line 86: get { Line 87: return ((ASP.global_asax)(this.Context.ApplicationInstance));
Source File: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\transaccional\e224545b\e01314f1\App_Web_movilidad.aspx.701f4c92.xzfw98jm.0.cs Line: 85
Solución
Como nos damos cuenta, el error radica que el sitio hace referencia archivos temporales que se crean cuando se consume el mismo.
Para solucionarlo debemos reiniciar o detener el IIS y luego limpiar los archivos temporales que se encuentran en la ruta.
En la mayoría de las veces, es necesario validar en una aplicación que caracteres introduce el usuario en un campo de texto, como por ejemplo: solo letras para la captura de Nombres y apellidos o solo números en diferentes navegadores para un teléfono o validar sólo números y letras.
Validar Textbox en C# para que acepte solo números, lo podemos lograr a través del siguiente código JavaScript, mostrado a continuación:
Validar sólo números
Esta función nos permite identificar a través de la propiedad event.keyCode la tecla digitada. Si el caracteres digitado no se encuentra dentro del rango de teclas numéricas (del 48 al 57) retorna falso (no permite escribir el caracter), como lo muestra el siguiente código:
//Función que permite solo Números
function ValidaSoloNumeros() {
if ((event.keyCode < 48) || (event.keyCode > 57))
event.returnValue = false;
}
Luego, para llamar la función en nuestra pagina web, solo basta con invocarlo en el evento onkeypress de la caja de texto así:
Validar sólo Texto o Letras
A diferencia del código anterior, éste nos permite digitar sólo texto, letras mayúsculas (del 65 al 90) y minúsculas (del 97 al 122) así:
Llamamos la función en el evento onkeypress de la caja de texto:
Si queremos que los códigos anteriores, no estén incluidos dentro de la pagina web, podemos crear un archivo .js llamado Validaciones.js, luego copiamos y pegamos el código anterior en este archivo, guardamos y finalmente agregamos la siguiente línea, arriba del tag </head> , de la pagina donde se desee llamar la función:
Espero los pueda ayudar, cualquier duda me escriben por este post o a mi correo, hasta pronto.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""
Para un desarrollo tenia un inconveniente con un Datatable, el cual consistía en que los datos que tenia en ese momento se repetían, esto me ocasionaba inconsistencia en la presentación de la información.
Para esto necesitaba realizar un Select Distinct From muy parecido al que se realiza en Sql, pero usando C# o algo que me permitiera eliminar los datos repetidos en el Datatable, como solución realice la siguiente linea:
1. Declaro Datatable: C#
DataTable dtDistinct = new DataTable();
VB
Dim dtDistinct As DataTable();
2. Realizo Distinct del Datatable dtAll que contiene los registros repetidos, por los campos que considero se repiten: C#
En algunas ocasiones existe la necesidad de bloquear la tecla backspace o tecla retroceso, la cual se encarga de mover el cursor a la izquierda eliminando caracteres. Para navegadores se utiliza para acceder a la pagina anterior (Atrás o Back), para esto les dejo un código en Javascript que nos permite bloquear la tecla mediante Javascript dentro de un textbox.