Imaginemos que tenemos un gridview al cual le hemos incorporado una columna con un checkbox, valor el cual querremos recoger para realizar alguna acción si esta o no seleccionado. Pues el código sería el siguiente:
CÓDIGO ASP/HTML:
<asp:GridView ID="grdPersonasWS" Width="400px" DataKeyNames="IdPersonaNeo" runat="server" AutoGenerateColumns="false">
<columns>
<asp:templatefield>
<itemtemplate>
<asp:checkbox id="chkIdPersona" runat="server">
</itemtemplate>
</asp:TemplateField>
<asp:boundfield headertext="Id" datafield="IdPersonaNeo">
<asp:boundfield headertext="Nom" datafield="Nombre">
<asp:boundfield headertext="1r Cognom" datafield="Apellido1">
<asp:boundfield headertext="2n Congom" datafield="Apellido2">
<asp:BoundField HeaderText="Naixement" DataField="FechaNacimiento" HtmlEncode="false"
DataFormatString="{0:dd/MM/yyyy}" />
</columns>
</asp:GridView>
CÓDIGO VB.Net:
For i As Integer = 0 To Me.grdPersonasWS.Rows.Count - 1
If CType(grdPersonasWS.Rows.Item(i).Cells(0).Controls(1), CheckBox).Checked Then
//Acción seleccionadas
else
//Acción no seleccionadas
End If
Next
sábado, febrero 23, 2008
viernes, febrero 22, 2008
Textbox solo números javascript, validator .net y via código
Muchas veces es necesario bloquear el formato de entrada de algunos textbox o input según programemos en html o asp.net. Para ello tenemos diferentes opciones, bloquearlo via javascript, verificar los datos en el codigo behind de .net una vez ya estamos en server, o utilizar un validator.
JAVASCRIPT:
onkeypress="return soloNumeros(event);"
function soloNumeros(evt)
{
// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57
var key = evt.keyCode ? evt.keyCode : evt.which ;
return (key <= 40 || (key >= 48 && key <= 57)); }
VALIDATOR:
<asp:regularexpressionvalidator id="RegularExpressionValidator1" runat="server" errormessage="RegularExpressionValidator" validationexpression="\d"></asp:RegularExpressionValidator>
VB.NET:
try{
int i =me.TextBox1.Text;
}
catch{
//No esta bien el formato
}
JAVASCRIPT:
onkeypress="return soloNumeros(event);"
function soloNumeros(evt)
{
// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57
var key = evt.keyCode ? evt.keyCode : evt.which ;
return (key <= 40 || (key >= 48 && key <= 57)); }
VALIDATOR:
<asp:regularexpressionvalidator id="RegularExpressionValidator1" runat="server" errormessage="RegularExpressionValidator" validationexpression="\d"></asp:RegularExpressionValidator>
VB.NET:
try{
int i =me.TextBox1.Text;
}
catch{
//No esta bien el formato
}
Etiquetas:
javascript
jueves, febrero 21, 2008
Grabar archivo asp.net
A continuación se detalla como enviar un archivo desde cliente a servidor desde una página web.
CÓDIGO HTML:
<input id="MyFile" runat="server" type="file">
CÓDIGO VB:
'Guardo en el servidor
MyFile.PostedFile.SaveAs(Server.MapPath("/directorio/" & ArchivoServidor)
Atención, el directorio en el cual se escribe, el usuario del servidor web ha de tener permisos de escritura.
CÓDIGO HTML:
<input id="MyFile" runat="server" type="file">
CÓDIGO VB:
'Guardo en el servidor
MyFile.PostedFile.SaveAs(Server.MapPath("/directorio/" & ArchivoServidor)
Atención, el directorio en el cual se escribe, el usuario del servidor web ha de tener permisos de escritura.
miércoles, febrero 20, 2008
Lucene .Net
Esta es una API que permite realizar de manera eficiente búsquedas de texto, al estilo full-text index de SQL Server, con la ventaja, que puede realizar búsquedas semánticas sobre el texto. Un ejemplo sería, buscamos "Informática" y encontrariamos "Informatica,Informática, Informatic, Informatico, Informaticos...".
CONCEPTOS BÁSICOS:
Index: Seria el similar a tabla de BD
Document: Seria el similar a la row de BD
Field: Seria el similar a columna de BD
Un Field tiene diferentes propiedades que detallamos a continuación:
Indexado o no Indexado
Guardado o no Guardado
Tipos de Indexación:
Tokenized: Indexa pasando por el analizador semántico
UnTokenized: Indexa sin pasar por el analizador semántico
No: No indexa
No_Norms: ???
Toda la información con la que trabaja lucene, es de tipo string, por tanto, si queremos guardar números, y lo que es más importante, hacer busquedas sobre estos de tipo BETWEEN hemos de tener en cuenta la longitud de las cadenas a comparar.
CONSULTAS:
AND: +(campo1:valor1) +(campo2:valor2)
OR: (campo1:valor1) || (campo2:valor2)
NOT: +(campo1:valor1) -(campo2:valor2)
BETWEEN: campo:[00001 TO 10000] *es una comparación de strings
Hay complementos para las búsquedas como son los filtros, que no es más que un AND con un valor fijo.
BÚSQUEDAS:
El resultado de una búsqueda es un array de direcciones de memoria con el total de los resultados, sobre estos, se puede realizar la paginación, obteniendo por último el documento de lucene al qual apunta cada apuntador y podiendo retornar la información deseada.
Por defecto, cada búsqueda se va cacheando, y por lo tanto, permitiendo que las búsquedas posteriores se realicen de forma más rápida. No es obligatorio que la búsqueda sea exactamente la misma para optimizar el resultado de las posteriores búsquedas.
PROYECTO LUCENE:
Lucene es un proyecto originario de Java, el cual ha sido traducido a .Net y actualmente ya se dispone de la versión 2.1.
CASOS DE ÉXITO:
Wikipedia.com
Monster.com
search.wikia.com
technorati.com
Fotocasa.com
Infojobs.com.br
Laboris.net
MÁS INFORMACIÓN:
Sitio oficial: http://incubator.apache.org/lucene.net/
Descargas: http://incubator.apache.org/lucene.net/download/
Documentación: http://incubator.apache.org/lucene.net/docs/
CONCEPTOS BÁSICOS:
Index: Seria el similar a tabla de BD
Document: Seria el similar a la row de BD
Field: Seria el similar a columna de BD
Un Field tiene diferentes propiedades que detallamos a continuación:
Indexado o no Indexado
Guardado o no Guardado
Tipos de Indexación:
Tokenized: Indexa pasando por el analizador semántico
UnTokenized: Indexa sin pasar por el analizador semántico
No: No indexa
No_Norms: ???
Toda la información con la que trabaja lucene, es de tipo string, por tanto, si queremos guardar números, y lo que es más importante, hacer busquedas sobre estos de tipo BETWEEN hemos de tener en cuenta la longitud de las cadenas a comparar.
CONSULTAS:
AND: +(campo1:valor1) +(campo2:valor2)
OR: (campo1:valor1) || (campo2:valor2)
NOT: +(campo1:valor1) -(campo2:valor2)
BETWEEN: campo:[00001 TO 10000] *es una comparación de strings
Hay complementos para las búsquedas como son los filtros, que no es más que un AND con un valor fijo.
BÚSQUEDAS:
El resultado de una búsqueda es un array de direcciones de memoria con el total de los resultados, sobre estos, se puede realizar la paginación, obteniendo por último el documento de lucene al qual apunta cada apuntador y podiendo retornar la información deseada.
Por defecto, cada búsqueda se va cacheando, y por lo tanto, permitiendo que las búsquedas posteriores se realicen de forma más rápida. No es obligatorio que la búsqueda sea exactamente la misma para optimizar el resultado de las posteriores búsquedas.
PROYECTO LUCENE:
Lucene es un proyecto originario de Java, el cual ha sido traducido a .Net y actualmente ya se dispone de la versión 2.1.
CASOS DE ÉXITO:
Wikipedia.com
Monster.com
search.wikia.com
technorati.com
Fotocasa.com
Infojobs.com.br
Laboris.net
MÁS INFORMACIÓN:
Sitio oficial: http://incubator.apache.org/lucene.net/
Descargas: http://incubator.apache.org/lucene.net/download/
Documentación: http://incubator.apache.org/lucene.net/docs/
Etiquetas:
lucene
lunes, febrero 11, 2008
Order by sql dinámico
Este tipo de instrucción, válida para SQL Server tiene una restricción, que es que solo se puede ordenar por 1 única columna. Esta restricción, la podríamos solventar teniendo una columna de ordenación con las diferentes concatenaciones si fuera necesario.
CÓDIGO:
ORDER BY
CASE WHEN @Orden = 2 THEN i.FK_IdCategoria
ELSE i.Orden
END
Otra solución a este tema, sería utilizar sql dinámico tal y como se ve a continuación:
CÓDIGO 1:
declare @sql as varchar(1000)
declare @id as varchar(10)
set @id='10'
set @sql ='select * from tabla where id=' + @id
EXEC(@sql)
CÓDIGO 2:
declare @sql as varchar(1000)
declare @id as varchar(10)
set @sql ='select * from tabla where id=@id'
sp_executesql @SQL, N'@id nVarChar(10)', @id= 'cliente1'
CÓDIGO:
ORDER BY
CASE WHEN @Orden = 2 THEN i.FK_IdCategoria
ELSE i.Orden
END
Otra solución a este tema, sería utilizar sql dinámico tal y como se ve a continuación:
CÓDIGO 1:
declare @sql as varchar(1000)
declare @id as varchar(10)
set @id='10'
set @sql ='select * from tabla where id=' + @id
EXEC(@sql)
CÓDIGO 2:
declare @sql as varchar(1000)
declare @id as varchar(10)
set @sql ='select * from tabla where id=@id'
sp_executesql @SQL, N'@id nVarChar(10)', @id= 'cliente1'
Etiquetas:
sql server
martes, febrero 05, 2008
DateFormatString en GridView
Esta es una opción muy típica de uso con gridviews y datagrids. Para aquellos que heredamos nuestros conocimientos de Asp.Net 1.0 es importante saber este detalle para no volvernos locos. Cuando utilicemos columnas con fechas, y queramos solo mostrar el día debemos utilizar el parámetros HTMLEncode=false.
Código:
<asp:boundfield headertext="Naixement" datafield="FechaNacimiento" htmlencode="false" dataformatstring="{0:dd/MM/yyyy}">
Código:
<asp:boundfield headertext="Naixement" datafield="FechaNacimiento" htmlencode="false" dataformatstring="{0:dd/MM/yyyy}">
Etiquetas:
asp.net,
framework,
gridview,
web development
Suscribirse a:
Entradas (Atom)
