Publicado por Pedro en Noviembre 20, 2009
Hola fieles lectores!
¿Cómo hcer que el IIS no nos bloquee las conexiones a 10 sesiones simultaneas?
Esto es aplicable en Windows XP Profesional, al menos a IIS 5.1, entorno en el que lo he aplicado pero creo que valdrá también para IIS 6.0.
Aquí estamos subiendo el número de 50 conexiones:
cd \inetpub\adminscripts
cscript adsutil.vbs set w3svc/MaxConnections 50
iisreset
Espero os sirva este pequeño comando!
Publicado en Programación | Deja un Comentario »
Publicado por Pedro en Enero 4, 2009
Realizamos una búsqueda mediante un cuadro de texto para filtrar los elementos del ListView:
En la página ASPX:
<p>
Aplicar filtro de búsqueda:
<asp:TextBox ID=”txtFiltro” runat=”server”></asp:TextBox>
<asp:Button ID=”cmdFiltrar” runat=”server” Text=”Aplicar” OnClick=”Filtrar” />
</p>
<asp:ListView Id=”lsvJuegos” runat=”server” DataKeyNames=”IdJuego” DataSourceID=”sqlJuegos” OnItemCommand=”ListadoDeComandos”>
<LayoutTemplate>
<asp:PlaceHolder ID=”itemPlaceHolder” runat=”server”></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<p><%#Eval(“NombreJuego”)%></p>
</ItemTemplate>
</asp:ListView>
<asp:Label ID=”lblMensaje” runat=”server”></asp:Label>
<asp:SqlDataSource ID=”sqlJuegos” runat=”server”></asp:SqlDataSource>
En la página de código:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Enlazar SQL
sqlJuegos.ConnectionString = “Data Source=.\SQLEXPRESS;AttachDbFilename=’C:\datos\Visual Studio 2008\WebSites\Prueba1\App_Data\Juegos_NDS.mdf’;Integrated Security=True;User Instance=True”
sqlJuegos.SelectCommand = “SELECT * FROM [Juegos]“
End Sub
Sub Filtrar()
Dim CriterioDeBusqueda As String
CriterioDeBusqueda = txtFiltro.Text
sqlJuegos.SelectCommand = “SELECT * FROM [Juegos] WHERE NombreJuego LIKE ‘%” & CriterioDeBusqueda & “%’”
sqlJuegos.DataBind()
End Sub
La búsqueda se hace incremental utilizando la palabra LIKE
Publicado en Programación | 1 comentario
Publicado por Pedro en Enero 4, 2009
Lo estrictamente necesario para poder eliminar un registro en un ListView es lo siguiente:
En la página ASPX:
<asp:ListView Id=”lsvJuegos” runat=”server” DataKeyNames=”IdJuego” DataSourceID=”sqlJuegos” OnItemCommand=”ListadoDeComandos”>
<LayoutTemplate>
<asp:PlaceHolder ID=”itemPlaceHolder” runat=”server”></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<p>
<asp:Label ID=”lblIdJuegoMostrando” runat=”server” Text=’<%#Bind(“IdJuego”) %>‘ Visible=”false”></asp:Label>
<#Eval(“NombreJuego”)%>
<asp:LinkButton ID=”lnkEliminar” runat=”server” CommandName=”EliminarUnRegistro” Text=”Eliminar”></asp:LinkButton>
</p>
</ItemTemplate>
</asp:ListView>
<asp:Label ID=”lblMensaje” runat=”server”></asp:Label>
<asp:SqlDataSource ID=”sqlJuegos” runat=”server”></asp:SqlDataSource>
En la página de código:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Enlazar SQL
sqlJuegos.ConnectionString = “Data Source=.\SQLEXPRESS;AttachDbFilename=’C:\datos\Visual Studio 2008\WebSites\Prueba1\App_Data\Juegos_NDS.mdf’;Integrated Security=True;User Instance=True”
sqlJuegos.SelectCommand = “SELECT * FROM [Juegos]“
End Sub
Sub ListadoDeComandos(ByVal sender As Object, ByVal e As ListViewCommandEventArgs)
Select Case e.CommandName
Case “EliminarUnRegistro”
Dim IdJuego As String = CType(e.Item.FindControl(“lblIdJuegoMostrando”), Object).Text
Dim CadenaSQL As String
CadenaSQL = “DELETE FROM Juegos WHERE IdJuego=” & IdJuego
sqlJuegos.DeleteCommand = CadenaSQL
sqlJuegos.Delete()
sqlJuegos.DataBind()
End Select
End Sub
Protected Sub lsvJuegos_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles lsvJuegos.ItemDataBound
If e.Item.ItemType = ListViewItemType.DataItem Then
Dim BotonDeBorrar As LinkButton
BotonDeBorrar = e.Item.FindControl(“lnkEliminar”)
If BotonDeBorrar IsNot Nothing Then
BotonDeBorrar.Attributes.Add(“onclick”, “javascript:return confirm(‘¨Seguro que desea eliminar el registro?’)”)
End If
End If
End Sub
Podréis ver que se pide confirmación al usuario antes de eliminar.
Publicado en Programación | 2 Comentarios »
Publicado por Pedro en Enero 4, 2009
Para insertar un registro en la base de datos desde un ListView tenemos que tener al menos lo siguiente:
En la página ASPX:
<asp:ListView Id=”lsvJuegos” runat=”server” DataKeyNames=”IdJuego” DataSourceID=”sqlJuegos” OnItemCommand=”ListadoDeComandos”>
<LayoutTemplate>
<asp:PlaceHolder ID=”itemPlaceHolder” runat=”server”></asp:PlaceHolder>
<asp:LinkButton ID=”lnkNuevo” runat=”server” Text=”Pulse aqu¡ para añadir un registro” OnClick=”Nuevo”></asp:LinkButton>
</LayoutTemplate>
<ItemTemplate>
<p><%#Eval(“NombreJuego”)%> </p>
</ItemTemplate>
<InsertItemTemplate>
<p>
<asp:TextBox ID=”txtNombreInsertando” runat=”server”></asp:TextBox>
<asp:LinkButton ID=”lnkGuardaInsertando” runat=”server” CommandName=”GuardarInsertando” Text=”Guardar”></asp:LinkButton>
<asp:LinkButton ID=”lnkCancelarInsertando” runat=”server” CommandName=”CancelInsertando” Text=”Cancelar”></asp:LinkButton>
</p>
</InsertItemTemplate>
</asp:ListView>
<asp:Label ID=”lblMensaje” runat=”server”></asp:Label>
<asp:SqlDataSource ID=”sqlJuegos” runat=”server”></asp:SqlDataSource>
En la página de código:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Enlazar SQL
sqlJuegos.ConnectionString = “Data Source=.\SQLEXPRESS;AttachDbFilename=’C:\datos\Visual Studio 2008\WebSites\Prueba1\App_Data\Juegos_NDS.mdf’;Integrated Security=True;User Instance=True”
sqlJuegos.SelectCommand = “SELECT * FROM [Juegos]“
End Sub
Sub ListadoDeComandos(ByVal sender As Object, ByVal e As ListViewCommandEventArgs)
Select Case e.CommandName
Case “GuardarInsertando”
Dim NuevoValor As String = CType(e.Item.FindControl(“txtNombreInsertando”), Object ).Text
Dim CadenaSQL As String
CadenaSQL = “INSERT INTO Juegos (NombreJuego) VALUES (‘” & NuevoValor & “‘)”
sqlJuegos.InsertCommand = CadenaSQL
sqlJuegos.Insert()
sqlJuegos.DataBind()
lsvJuegos.InsertItemPosition = InsertItemPosition.None
lsvJuegos.FindControl(“lnkNuevo”).Visible = True
Case “CancelInsertando”
lsvJuegos.InsertItemPosition = InsertItemPosition.None
lsvJuegos.FindControl(“lnkNuevo”).Visible = True
End Select
End Sub
Sub Nuevo()
lsvJuegos.InsertItemPosition = InsertItemPosition.LastItem
lsvJuegos.FindControl(“lnkNuevo”).Visible = False
End Sub
Tal y como está hecho en este ejemplo existe un enlace que mostrará el cuadro de texto para añadir un registro mediante la primera línea de la subrutina Nuevo al mismo tiempo que el enlace se ocultará. Al guardar o cancelar, se oculta el cuadro de texto y se vuelve a mostrar el enlace mediante las dos líneas siguientes:
lsvJuegos.InsertItemPosition = InsertItemPosition.None
lsvJuegos.FindControl(“lnkNuevo”).Visible = True
Publicado en Programación | 1 comentario
Publicado por Pedro en Enero 4, 2009
Para poder Editar los registros de un ListView, tenemos que tener al mínimo el siguiente código:
En la página ASPX:
<asp:ListView Id=”lsvJuegos” runat=”server” DataKeyNames=”IdJuego” DataSourceID=”sqlJuegos” OnItemCommand=”ListadoDeComandos” OnItemEditing=”EditandoRegistro”>
<LayoutTemplate>
<asp:PlaceHolder ID=”itemPlaceHolder” runat=”server”></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<p><%#Eval(“NombreJuego”)%>
<asp:LinkButton ID=”lnkEditar” runat=”server” CommandName=”Edit” Text=”Modificar”></asp:LinkButton>
</p>
</ItemTemplate>
<EditItemTemplate>
<p>
<asp:Label ID=”lblIdJuego” runat=”server” Text=’<%#Bind(“IdJuego”) %>‘ Visible=”false”></asp:Label>
<asp:TextBox ID=”txtNombre” runat=”server” Text=’<%#Bind(“NombreJuego”) %>‘></asp:TextBox>
<asp:LinkButton ID=”lnkGuardar” runat=”server” CommandName=”Save” Text=”Guardar”></asp:LinkButton>
<asp:LinkButton ID=”lnkCancelar” runat=”server” CommandName=”Cancel” Text=”Cancelar”></asp:LinkButton>
</p>
</EditItemTemplate>
</asp:ListView>
<asp:Label ID=”lblMensaje” runat=”server”></asp:Label>
<asp:SqlDataSource ID=”sqlJuegos” runat=”server”></asp:SqlDataSource>
En la página de código:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Enlazar SQL
sqlJuegos.ConnectionString = “Data Source=.\SQLEXPRESS;AttachDbFilename=’C:\datos\Visual Studio 2008\WebSites\Prueba1\App_Data\Juegos_NDS.mdf’;Integrated Security=True;User Instance=True”
sqlJuegos.SelectCommand = “SELECT * FROM [Juegos]“
End Sub
Sub EditandoRegistro(ByVal sender As Object, ByVal e As ListViewEditEventArgs)
lsvJuegos.EditIndex = e.NewEditIndex
End Sub
Sub ListadoDeComandos(ByVal sender As Object, ByVal e As ListViewCommandEventArgs)
Select Case e.CommandName
Case “Save”
Dim NuevoValor As String = CType(e.Item.FindControl(“txtNombre”), Object).Text
Dim IdJuego As String
IdJuego = CType(e.Item.FindControl(“lblIdJuego”), Object).Text
Dim CadenaSQL As String
CadenaSQL = “UPDATE Juegos SET NombreJuego=’” & NuevoValor & “‘ WHERE IdJuego=” & IdJuego
sqlJuegos.UpdateCommand = CadenaSQL
sqlJuegos.Update()
sqlJuegos.DataBind()
lsvJuegos.EditIndex = -1
End Select
End Sub
Aquí queda este ejemplo. Como siempre, gracias por vuestros comentarios.
Publicado en Programación | Deja un Comentario »
Publicado por Pedro en Enero 4, 2009
Una de las cosas que me suele ayudar mucho a la hora de meterme con un nuevo control o componente, tal y como lo estoy haciendo ahora con el ListView, es crearlo con su mínima expresión para que funcione. Después ya le iré poniendo todos los añadidos para darle más funcionalidad.
Para que funcione un ListView enlazado a datos, esto es suficiente:
En la página ASPX:
<asp:ListView Id=”lsvJuegos” runat=”server”>
<LayoutTemplate>
<asp:PlaceHolder ID=”itemPlaceHolder” runat=”server”></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<p><%#Eval(“NombreJuego”)%></p>
</ItemTemplate>
</asp:ListView>
En la página de código:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Enlazar ListView
Dim Con As New Data.SqlClient.SqlConnection
Con.ConnectionString = “Data Source=.\SQLEXPRESS;AttachDbFilename=’C:\datos\Visual Studio 2008\WebSites\Prueba1\App_Data\Juegos_NDS.mdf’;Integrated Security=True;User Instance=True”
Try
Con.Open()
Dim CadenaSQL As String = “SELECT NombreJuego FROM Juegos”
Dim Adapter As Data.SqlClient.SqlDataAdapter
Adapter = New Data.SqlClient.SqlDataAdapter(CadenaSQL, Con)
Dim dsJuegos As Data.DataSet = New Data.DataSet
Adapter.Fill(dsJuegos, “Juegos”)
lsvJuegos.DataSource = dsJuegos.Tables(“Juegos”)
lsvJuegos.DataBind()
Catch ex As Exception
End Try
End Sub
Eso es todo!.
He dejado la cadena de conexión que ha generado el Visual Web Developper Express, ya que me ha parecido interesante.
Es obvio que ha de existir una base de datos con una tabla “Juegos” que incluya un campo “NombreJuego”.
Saludos…
Publicado en Programación | Deja un Comentario »
Publicado por Pedro en Enero 3, 2009
COMO REACCIONAR A LOS DIFERENTES EVENTOS QUE SE PRODUCEN EN UN LISTVIEW
Para el ejemplo, tenemos una aplicación que muestra una lista de juegos que tenemos en una base de datos.
Mostraremos en una etiqueta un mensaje de confirmación al añadir, modificar, guardar o eliminar un registro.
En la página ASPX añadimos el ListView con el nombre lsvJuegos.
Activar las opciones de edición, borrado e inserción, para que así nos ponga los correspondientes botones cuyas acciones capturaremos en el evento ItemCommand:
<asp:Button ID=”DeleteButton” runat=”server” CommandName=”Delete” Text=”Eliminar” />
<asp:Button ID=”InsertButton” runat=”server” CommandName=”Insert” Text=”Guardar” />
<asp:Button ID=”EditButton” runat=”server” CommandName=”Edit” Text=”Editar” />
<asp:Button ID=”UpdateButton” runat=”server” CommandName=”Update” Text=”Guardar” />
<asp:Button ID=”CancelButton” runat=”server” CommandName=”Cancel” Text=”Cancelar” />
(he puesto estas líneas para ilustrar el ejemplo pero normalmente se crean automáticamente)
También añadiremos un label:
<asp:Label ID=”lblMensaje” runat=”server” Text=”" CssClass=”lblMensaje”></asp:Label>
En la página de code-behind escribiremos las siguientes líneas en el evento del ListView ItemCommand():
Protected Sub lsvJuegos_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles lsvJuegos.ItemCommand
Dim Mensaje As String = “”
Select Case e.CommandName
Case “Delete”
Mensaje = “Registro borrado…”
Case “Insert”
Mensaje = “Registro añadido…”
Case “Edit”
Mensaje = “Editando un registro…”
Case “Update”
Mensaje = “Registro guardado…”
Case Else
Mensaje = “”
End Select
lblMensaje.Text = Mensaje
End Sub
Con este sencillo procedimiento podemos hacer que al añadir, guardar o eliminar un elemento del listview se cambie el texto de una etiqueta.
Publicado en Programación | Deja un Comentario »