Cómo crear una conexión ORACLE 11g – ASP.NET utilizando C#

Los siguientes pasos muestran la manera de establecer conexión entre el sistema gestor de base de datos Oracle y el modelo de desarrollo ASP.NET.

Antes que nada es importante mencionar que en algunas ocasiones es conveniente dejar a un lado lo convencional y no utilizar solo aplicaciones de Microsoft para brindar tecnología a un sistema. Muchas empresas y DBA`s (Database Administrator) eligen los servicios de Oracle antes que otros motores de BD convirtiéndolo en uno de los mejores y mas utilizados. Algunas razones por las que es seleccionado son por las características de desempeño, facilidad en la escalabilidad, la alta disponibilidad en la base de datos y la seguridad implementada en sus aplicaciones.

Seguir leyendo….

[IIS] Subir archivos de mas de 4MB

En algunas ocasiones es necesario adjuntar archivos desde el cliente, ya sea para enviar mi CV (Hoja de Vida) en algún registro a un Diplomado o simplemente para asociar una imagen a mi cuenta (Avatar), anteriormente ya vimos Cómo cargar archivos en SQL Server con ASP.NET usando C#  Pero IIS tiene definido por default permitir solo el cargado de archivos menores a 4Mb, es decir archivos relativamente pequeños.

En caso de necesitar archivos de mas de 4MB, se deberá hacer lo siguiente:

En el archivo de configuración Web.config:

Agregar la etiqueta <httpRuntime>, como propiedad agregar maxRequestLength y como valor de esta propiedad, establecer como entero (Int32) el tamaño en KB del limite del búfer, es decir del tamaño máximo del archivo que se puede seleccionar.

<httpRuntime maxRequestLength="10240"/> //10 MB

Saludos

[ASPX] Mostrar Imagen en Base de Datos en una etiqueta <img>

Hola entusiasta del desarrollo!…. Te invitamos a revisar este mismo contenido en nuestro nuevo sitio CodeTips.com.mx !
http://www.codetips.com.mx/asp-net/aspx-mostrar-imagen-en-base-de-datos-en-una-etiqueta-img/

Es muy común que en alguna aplicación además de información de tipo texto o numérico (entre otras), sea también necesario almacenar imágenes correspondientes a la información que se requiere representar.

Supongamos una aplicación en la cual se desean mostrar los eventos que se realizaran en cierta institución ordenada en cierta manera pero que además de la información propia del evento, se quiera mostrar un carrusel con JQuery en el cual se muestren los banners correspondientes a cada evento.

Para esto se deberá almacenar dicho banner en Base de Datos junto con la información textual del evento. He aquí la pregunta. Si mi imagen esta almacenada en base de datos, ¿Cómo puedo mostrar esta imagen en una etiqueta IMG? A continuación se muestra una opción para hacerlo.

Paso 1: Crear un WebForm llamado Imagen.aspx

Este formulario funcionara como url local para acceder a la imagen.

Seguir leyendo este post…….

Mostrar PDF en IFRAME dentro de Master Page

En algunas ocasiones es necesario mostrar archivos PDF en un sitio Web, por ejemplo, en un Sistema que genera Ordenes de Pago, pues es lógico pensar que las ordenes generadas sean mostradas en un Web Form, para su impresión o almacenamiento por parte del cliente.

He aquí una forma de mostrar un archivo PDF creado en Directorios de la aplicación (Servidor) en un Web Form, hijo de una Master Page.

ASPX


<iframe id="pdf" runat="server" height="800" width="600"><iframe>

Como puedes darte cuenta, coloco la etiqueta runat=»server», esto hace visible este control del lado del servidor.

C#

//Nuevo control HTML y Buscamos dentro del ContentPlaceHolder del sitio llamado "contenido"
HtmlControl frame1 = (HtmlControl) Page.Master.FindControl("Contenido").FindControl("pdf");
//Asignamos a la propiedad "src" la ruta donde se genero el archivo
frame1.Attributes["src"] = "../../Documentos/" + Session["usuario"] + ".pdf";

Con esto se le indica al contro iframe (de lado del cliente), la ruta del archivo PDF (del lado del servidor). Esto bastará para mostrarse correctamente.

Saludos.
Gracias.

ASPX + TinyMCE

En algunas ocasiones es necesario crear aplicaciones web, cuyos formularios soliciten información a los usuarios (Eje: El registro a un diplomado virtual), en donde estos puedan agregar enlaces a alguna pagina, crear tablas para organizar contenidos, enumerar en lista algunas características o elementos, resaltar texto o hacerlo mas grande.

Claro!!!.. Las respuesta es un TextBox que tenga la propiedad de poder editar contenido como HTML. Ya que nativamente el control ASP TextBox no cuenta con esta propiedad, es necesario utilizar otras tecnologías como Ajax o en este caso JQuery.

Lo primero que necesitamos es descargar el plugin TinyMCE, un editor de contenido HTML muy popular, que además de todo cuenta con plugins para WordPress, Joomla, etc.

http://www.tinymce.com/tryit/basic.php

Agregamos el directorio tiny_mce a nuestro proyecto, que entre otras cosas continene:

Los archivos .js, los temas, lenguajes, etc.

Luego de esto, ubicamos el asrchivo donde irá el control HTML, y configuramos el plugin:

<script src="tiny_mce/tiny_mce.js" type="text/javascript"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode: "textareas",
theme: "advanced",
plugins: "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions
,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste
,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,
template,wordcount,advlist,autosave",


// Theme options
theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft
,justifycenter,justifyright,justifyfull,fontselect,fontsizeselect,
|,tablecontrols",
theme_advanced_buttons2: "bullist,numlist,link,unlink,image,code",
theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,
sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons3: "",
theme_advanced_buttons4: "insertlayer,moveforward,movebackward,absolute,|
,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,
template,pagebreak,restoredraft",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true,

// Example content CSS (should be your site CSS)
// using false to ensure that the default browser settings are used for
best Accessibility
// ACCESSIBILITY SETTINGS
content_css: false,
// Use browser preferred colors for dialogs.
browser_preferred_colors: true,
detect_highcontrast: true,

// Drop lists for link/image/media/template dialogs
template_external_list_url: «lists/template_list.js»,
external_link_list_url: «lists/link_list.js»,
external_image_list_url: «lists/image_list.js»,
media_external_list_url: «lists/media_list.js»,
// Style formats
style_formats: [
{ title: ‘Bold text’, inline: ‘b’ },
{ title: ‘Red text’, inline: ‘span’, styles: { color: ‘#ff0000’} },
{ title: ‘Red header’, block: ‘h1’, styles: { color: ‘#ff0000’} },
{ title: ‘Example 1’, inline: ‘span’, classes: ‘example1’ },
{ title: ‘Example 2’, inline: ‘span’, classes: ‘example2’ },
{ title: ‘Table styles’ },
{ title: ‘Table row 1’, selector: ‘tr’, classes: ‘tablerow1’ }
],

// Replace values for the template plugin
template_replace_values: {
username: «Some User»,
staffid: «991234»
}
});
</script>

Y finalmente el control que por default debe ser un textarea. Agregamos el
runat=”server” para verlo del lado del servidor y listo.

<body>
<form id="form1" runat="server">
<div>
<textarea runat="server" style="background-color:#000;
width: 300px" id="Texto" name="elm1" rows="15" cols="80"
></textarea>
</div>
</form>
</body>

Error “A potentially dangerous Request.Form value was detected”

Solucion 1:
Uso de las clases HTMLEncode y HTMLDecode.

http://blog.tentaclesoftware.com/archive/2012/05/21/asp-net-4-0-tinymce-and-
ldquoa-potentially-dangerous-request.aspx

Solucion 2:
Deshabilitar la RequestValidation.

Default.ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="TinyMCE.Default" ValidateRequest="false">

Web.Config

<location path="Default.aspx">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>

Gracias.

< %# Eval(“Valor”)% >

Últimamente me he percatado de la valiosa ayuda que esta función
tiene, y es que a veces es necesario procesar la información que el origen de
datos nos da, pero todo esto sobre algún control de datos.

Como ejemplo, he desarrollado una aplicación de evaluación de
escenarios/temas, donde cada usuario autenticado y autorizado, puede dar
valores de probabilidad a un escenario, en una escala del 1 al 5, registrando
en una Base de Datos, la evaluación que cada usuario le ha dado a cada uno de
los escenarios.

Pero sabemos que un usuario no terminará de evaluar todos
los escenarios en una sola sesión, así que es recomendable mostrarle una lista
de los escenarios y recordarle cuales ya han sido evaluados y cuáles no.

Para esto utilice un ListView como control de repetición
de datos, para mostrar los escenarios/temas, y si ya han sido evaluados o no.
Para mostrar si ya han sido evaluados muestro una y si o muestro una .

Aqui el código de como hacerlo:

Dentro del ASP ListView

<HeaderTemplate>
<table cellpadding="0" cellspacing="0" width="700px" style="font-family:Calibri, Sans-Serif">
</HeaderTemplate>
<ItemTemplate>
<%# Convert.ToInt32(Eval("Probabilidad")) > 0 ? "<img src=\"../images/palomita.png\" width=\"20px\" />" : "<img src=\"../images/tachita.png\" width=\"15px\" />"%>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>

Quedando algo asi:

Gracias


Facebook
Twitter
More...

Customizar Rows en un ASP Gridview

Hola entusiasta del desarrollo!…. Te invitamos a revisar este mismo contenido en nuestro nuevo sitio CodeTips.com.mx !
http://www.codetips.com.mx/asp-net/customizar-rows-en-un-asp-gridview/

La manera más fácil de utilizar un ASP Gridview es que a partir de un origen de datos seleccionado Visual Studio, cree automáticamente las columnas y el tipo de control en el cual se representaran los datos, generalmente de tipo ASP BoundField.

Pero cada caso es muy diferente a los demás, en ocasiones esto no es muy conveniente debido a la extensa longitud de algunos datos.

Desarrollando un acortador de URL’s me encontré con un dato que quería mostrar en una columna de un ASP Gridview que era demasiado extenso (Url Larga), y al darle un ancho fijo a la columna lo único que hacia era distribuir el contenido en varias líneas. Eso si la cadena tenía espacios, si no, no respetaba el ancho de la columna.

Entonces, como no era necesario mostrar la cadena completa (Url Larga), decidí, hacer lo siguiente.

Seguir leyendo este post…….

Bindear un ASP Label desde un SqlDataSource

Por default, el control ASP Label no es bindeable a un origen de datos, dado que no posee la propiedad DataSource.

Pero si por alguna razon se necesita mostrar informacion desde un origen en tiempo de ejecucion, esta es una buena solucion:

«Envolver» el control Label dentro de algun otro que sea bindeable, por ejemplo un Formview

<asp:FormView ID=»Saldo» runat=»server» DataSourceID=»SqlDataSourceSaldo»>
     <ItemTemplate>
              <asp:Label CssClass=»formulario negritas» ID=»SaldoActualLabel» runat=»server» Text='<%# Eval(«Monto_Ejercido»)%>’ />
    </ItemTemplate>
<asp:FormView>

Y si se requiere algun formato en particular:
     Text='<%# Eval(«Monto_Ejercido»,»{0:c}») %>’

Gracias

Ajax Popup «Procesando»

Hola entusiasta del desarrollo!…. Te invitamos a revisar este mismo contenido en nuestro nuevo sitio CodeTips.com.mx !
http://www.codetips.com.mx/asp-net/ajax-popup-procesando/

Una forma de «controlar» la paciencia de los usuarios al estarse ejecutando procesos dentro del servidor, es la de mostrar un popup de progreso, deshabilitando la interaccion de cualquier control de la aplicacion.

Comenzamos con el codigo JavaScript que mostrara el Popup

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq);
function beginReq(sender, args)
{
      // muestra el popup
      $find(ModalProgress).show();
}
function endReq(sender, args)
{
      // esconde el popup
      $find(ModalProgress).hide();
}

Seguir leyendo este post…….