Crear un grid de cinco columnas combinable con Bootstrap 3

Bootstrap trabaja con un grid de 12 columnas, pero en ocasiones podemos necesitar crear 5 columnas, por lo tanto lo más adecuado sería un grid de 15 columnas que podemos definirnos de la siguiente manera.

    .colfive-1  {width: 6.66%;   float: left;}
    .colfive-2  {width: 13.33%;  float: left;}
    .colfive-3  {width: 20%;     float: left;}
    .colfive-4  {width: 26.66%;  float: left;}
    .colfive-5  {width: 33.33%;  float: left;}
    .colfive-6  {width: 40%;     float: left;}
    .colfive-7  {width: 46.66%;  float: left;}
    .colfive-8  {width: 53.33%;  float: left;}
    .colfive-9  {width: 60%;     float: left;}
    .colfive-10 {width: 66.66%;  float: left;}
    .colfive-11 {width: 73.33%;  float: left;}
    .colfive-12 {width: 80%;     float: left;}
    .colfive-13 {width: 86.66%;  float: left;}
    .colfive-14 {width: 93.33%;  float: left;}
    .colfive-15 {width: 100%;    float: left;}

Evitar validación de formulario al pulsar ENTER

Otra situación incómoda que puede producirse, es que cuando estemos en una caja de texto en un formulario, al pulsar ENTER, automaticamente se active el submit y se reenvíe el formulario. Es un destrozo por ejemplo si estamos trabajando en un textbox multilínea.

Para evitar esto, el formulario tiene un botón por defecto asociado, que es el que se activa cuando cualquier control ejecuta una validación. Si no se asocia ninguno, por defecto realiza un submit. Debemos indicarle por tanto un botón dentro del formulario, al que redirigir estas acciones. Pero como dicho botón no debe hacer nada, debe ser invisible y no tener eventos asociados.

 

<form id="form1" runat="server" defaultbutton="NoHagasNada">
...
...

<asp:Button ID="NoHagasNada" runat="server" Enabled="false" Style="display: none;" />

Evitar validación en botón Cancelar

Cuando tenemos un formulario on controles de validación, esto impide que por ejemplo se envíen campos vacios u otro tipo de restricciones. Esta es la acción predeterminada cuando pulsamos en el botón Enviar. Pero, por defecto, si tenemos un botón de Cancelar, para salir de esa pantalla, vemos que la validación se lanza igualmente.

Entonces a ese botón tenemos que indicarle que no queremos que haga ningún tipo de validación, y lo hacemos asignando la propiedad CausesValidation a False.

<asp:Button ID="btnCrear" runat="server" 
    OnClick="btnCrear_Click" 
    Text="Crear" />

<asp:Button ID="btnCancelar" runat="server" 
    OnClick="btnCancelar_Click" 
    Text="Cancelar" 
    CausesValidation="False" />

Cadenas de conexión con ConfigurationManager

Normalmente para conectarse a la base de datos usamos esto en ADO.

static string cadena="Data Source=.;Initial Catalog=miBaseDatos;User ID=sa" 
cnx = new SqlConnection(cadena);

Pero lo ideal sería añadirlo en el archivo de configuración del proyecto.

string cadena = ConfigurationManager.ConnectionStrings["miConexion1"].ConnectionString;
            cnx = new SqlConnection(cadena);

Y para ello en el App.Config necesitaríamos tener esta línea dentro.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
<connectionStrings>
  <add name="MiConexion1" connectionString="Data Source=.;Initial Catalog=Hospital;User ID=sa" />
</connectionStrings>

Es necesario importar referencia y using a System.Configuration.

Diferencias entre conexiones de modo Conectado y Desconectado

ADO.NET nos provee de dos formas de conectarse a la base de datos. Son los modos Conectado y Desconectado.
Cada uno utiliza un árbol diferente de objetos.

El Modo conectado es el habitual. Consiste en conectarse a la base de datos y realizar despues multitud de operaciones contra la base de datos, e ir actualizando. Finalmente, al acabar la sesión,cerramos la conexión. Pueden pasar horas, si no nos tira antes la base de datos.

El Modo desconectado, es mas rápido, porque se trata de cargar la primera vez que se hace la consulta toda la información en formato XML, que manejaremos en memoria. Y al final, cuando interesé se hará el volcado a la base de datos. Durante todo ese tiempo, no estará conectado a la base de datos. Esto es útil por ejemplo para manejar listas de provincias que no tienen modificaciones. O también una lista de empleados que se actualice una vez al día o muy poco. No sería nada recomendable utilizarlo en sitios donde se requiera actualización constante de la información.

En este último modo, la conexión a la base de datos se cierra inmediatamente, cuando ha terminado de descargar la información. Esto sucede en el momento en que se rellena el DataSet. Cuando tengamos el conjunto de resultados, ya no habrá conexión.

Para el modo conectado, se utilizan los objetos de ADO.NET, SQlConnection, SQLCommand y SQLDataReader.
Para el modo desconectado, hay que ir bajando desde SQLDataAdapter, SQLDataSet, SQLDataTables, y unas cuantas más.

En ambos modos, para conectar con bases de datos SQLServer, requiere importar System.Data.SQLClient.