Bienvenidos

Recuerda que tus comentarios son importantes y recuerda agradecer si te fue útil algun artículo publicado aquí.

L1f3 15 a D@nc3 Flo0r

miércoles, 16 de mayo de 2012

Tomar el valor de un control del masterpage

Imagina que tenemos un label en el masterpage y de una de las paginas queremos tomar el valor de ese label o talvez queremos asignar un valor a ese label.

Para hacer esto utilizamos este código:

Lab.lbl1= this.Master.FindControl("Content").FindControl("Login1").FindControl("lblID");


O este si queremos cambiar el valor del color a un botón del masterpage:



 //Cambiando el color de un boton
LinkButton BotonMenu = Master.FindControl("LoginView1").FindControl("LinkButton1") as LinkButton;
if (BotonMenu != null)
{
      BotonMenu.BackColor = System.Drawing.Color.FromName("#bfcbd6");
}


Si te fijas estos controles del ejemplo están dentro de un LoginView. Si tu control esta fuera dentro de algún componente como un loginview o un panel debes utilizar esa manera pero si esta fuera puedes dejar un solo FindControl.

GridView.RowCommand : Obtener un valor al ejecutar un comando en el gridview

La idea es tener un botón dentro del gridview y que cuando se le haga clic al botón se seleccione el valor de una de las columnas y se ejecute la acción.

En la propiedad command del boton se le puede especificar el nombre que quieras al comando y luego llamarlo de la siguiente manera:


void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    if(e.CommandName=="NombreComando")
    {
      // Selecciona el indice de la fila del boton en el que se hizo clic
      int index = Convert.ToInt32(e.CommandArgument);
            
      // retorna el row en que se hizo clic
      GridViewRow row = CustomersGridView.Rows[index];
            
      // asigna el valor de la celda de la columna 2 y la fila en que se hizo clic  
      string item = Server.HtmlDecode(row.Cells[2].Text);
        
    }
  }

Existen unos comandos ya predeterminados integrados al control Gridview que son:
Valor de CommandNameDescripción
"Cancel"
Cancela una operación de edición y devuelve el control GridView al modo de sólo lectura. Provoca el evento RowCancelingEdit.
"Delete"
Elimina el registro actual. Provoca los eventos RowDeleting y RowDeleted.
"Edit"
Pone el registro actual en modo de edición. Provoca el evento RowEditing.
"Page"
Realiza una operación de paginación. Establece la propiedad CommandArgument del botón en "First", "Last", "Next", "Prev" o en un número de página para especificar el tipo de operación de paginación que se va a realizar. Provoca los eventos PageIndexChanging y PageIndexChanged.
"Select"
Selecciona el registro actual. Provoca los eventos SelectedIndexChanging y SelectedIndexChanged.
"Sort"
Ordena el control GridView. Provoca los eventos Sorting y Sorted.
"Update"
Actualiza el registro actual en el origen de datos. Provoca los eventos RowUpdating y RowUpdated.

fuente: http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.gridview.rowcommand(v=vs.80).aspx

martes, 1 de mayo de 2012

Error: System.Threading.ThreadAbortException: Thread was being aborted.

System.Threading.ThreadAbortException: Thread was being aborted.

Que significa este error que aparece registrado en nuestro log?

Este error normalmente ocurre cuando utilizamos la sentencia Response.Redirect() para redirigirnos a otra página.
Ej.: Response.Redirect("Default.aspx");
 Esta sentencia va a funcionar pero arrojará el error en los logs "System.Threading.ThreadAbortException: Thread was being aborted" porque no le hemos especificado al código si luego de hacer el direccionamiento debe continuar o terminar la ejecución de la página actual.

Por eso el comando nos da el hint: "endResponse: Indicates whether execution of the current page should terminate."

Así que la sintaxis correcta debería ser:
Response.Redirect("Default.aspx",false);