Archivo de la categoría: C#

C# : Métodos estáticos – (Static)

Un poco sobre los métodos estáticos:

csharp

La principal característica:

  • Un método estático puede llamarse sin tener que crear un objeto de la clase que lo contenga.

Restricciones de los métodos estáticos:

  • No pueden acceder a los atributos de la clase ( salvo que sean estáticos).
  • Solo pueden llamar a otro método si este es estático.

¿ Cuándo es recomendable usar métodos estáticos ?

Buscando en msdn, pude hallar la siguiente recomendación:

Este se usa para desarrollar métodos que den ayuda a un procesamiento, por ejemplo: Convertir un formato

 

 

Imagen en GridView dependiendo de una condición

Bueno otro tip, que he utilizado y les podría servir.

Mostrar Imagen en GridView dependiendo de una condición

Se trata de como mostrar una imagen dependiendo de una condición, cabe resaltar que para estos ejemplos voy a evaluar un valor booleano que se encuentra almacenado en una base de datos.

Dependiendo de su valor (falso o verdadero) me mostrará cierta imagen.

Debo decir que este ejemplo también lo he aplicado para determinar estados de controles dentro del gridview como (ImageButton, DropDownList y lo que se les ocurra). Claro utilizando un TemplateField.

Acá en caso de que la expresión booleana sea nula, mostraré una imagen .gif en blanco.


<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# (Eval("yesOrNo").Equals(true) ? "~/Images/logos/yes.gif" : (Eval("yesOrNo").Equals(false) ? "~/Images/logos/no.gif" : "~/Images/logos/blank.gif"))%>' />
</ItemTemplate>

Si siempre tendremos un valor para evaluar, podemos simplificar las cosas, quedando nuestro código así.


<ItemTemplate> <asp:Image ID="Image1" runat="server" ImageUrl='<%# (Eval("yesOrNo").Equals(true) ? "~/Images/logos/yes.gif" : "~/Images/logos/no.gif")%>' /> </ItemTemplate> 

Y por último podemos crear una función que reciba varios parametros, y dependiendo de ellos me devuelva un valor booleano.

Así llamamos al método:


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">                 <Columns>                     <asp:TemplateField>                         <ItemTemplate>                             <asp:Image ID="Image1" ImageUrl='<%# ChooseImage(Directcast(Eval("BooleanValue"), Boolean)) %>' runat="server" />                         </ItemTemplate>                     </asp:TemplateField>                 </Columns> </asp:GridView>

Y algo parecido a esto en el code behind.


Protected Function ChooseImage(ByVal value As Boolean) As String         If value = True Then             Return "~/images/GreenTick.gif"         Else             Return "~/images/RedCross.gif"         End If     End Function 

 

Espero les sirva. Saludos desde Guatemala.

Mostrar texto o imágen según valor en un Gridview (ASP.NET) – Evento RowDataBound

Bueno este es un «tip» que a muchos les podría ayudar.

Muchas veces necesitamos que las imágenes o valores que se muestran en un gridview cambien dependiendo de cierto valor que hemos almacenado en la base de datos.

Hoy les comparto 2 formas de hacerlo.

Primer forma: Utilizar el evento RowDataBound del Gridview

La forma de hacerlo es muy sencillo:

1) Damos clic derecho en nuestro GridView y seleccionamos la opción propiedades

2) Nos vamos a los eventos del mismo (clic en el icono de un rayo ), allí encontraremos todos los eventos pertenecientes al Gridview

3) El que nos interesa es el evento RowDataBound , damos doble clic sobre el.

 

4) VS nos creará automáticamente el siguiente método:

 

… pero ¿ cómo funciona esto ?

Pues bien, el método RowDataBound se ejecuta por cada fila que contenga nuestro gridview, por ejemplo si queremos mostrar una tabla que contiene 10 registros, a la hora de enlazar los datos este método se ejecutará en 10 ocasiones. En el mismo podemos acceder a cada celda de la fila.

5) Para poder modificar el texto o una imagen a mostrar el código sería más o menos este.

 

Acá lo que yo hice es mostrar una imagen según un valor almacenado en mi base de datos. Cabe mencionar que la imagen se debe de colocar dentro de un TemplateField. Así:

 

Bueno espero que esto les sirva en algún momento, al menos ya saben como pueden hacerlo.

Para mas información pueden buscar:  cambiar valores en el evento rowdatabound  del gridview.

Saludos desde Guatemala.

Enlazar RadioButtonList desde una base de datos (SQL SERVER)

RadioButtonList es un interesante control que permite agrupar objetos   de tipo RadioButton, dejandolos la seleccionar solamente uno de los que se encuentran agrupados en el (RadioButtonList).

Lo interesante es que también podemos enlazar  este control desde una base de datos, creando un «item» por cada registro que tenga la tabla  selecciona. Sin más les dejo el código para enlazar. (Es como enlazar un dropdownlist)
Un Saludo desde Guatemala.

<pre><%@ Control Language="C#" ClassName="PollControlAsync" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>

<script runat="server">
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        BindRadioButtonListData(1);
    }

    private void BindRadioButtonListData(int PollID)
    {
        // sting de conexion 
        string connectionString = ConfigurationManager.ConnectionStrings["PollConnectionString"].ConnectionString;

        // Inicializacion del objeto sql connection         
        using (SqlConnection mySqlConnection = new SqlConnection(connectionString))
        {
            try
            {
                // abrir conexion sql 
                mySqlConnection.Open();

                // consultamos los datos 
                SqlCommand mySqlCommand = new SqlCommand("SELECT * FROM [PollAnswers] WHERE ([PollID] = @PollID) ORDER BY [SortOrder]", mySqlConnection);   
                mySqlCommand.Parameters.AddWithValue("@PollID", PollID);             

                // utilizamos el objeto Sql Data Adapter object para pasarle el comando sql 
                SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(mySqlCommand);

                // instanciamos un dataset
                DataSet myDataSet = new DataSet();

                // llenamos el dataset
                mySqlDataAdapter.Fill(myDataSet);

                // indicamos el recurso de datos al RadioButtonList
                rblPollAnswers.DataSource = myDataSet;

                // especificamos el campo (texto que se mostrara)

                rblPollAnswers.DataTextField = "DisplayText";

                // indicamos el valor de cada objeto

                rblPollAnswers.DataValueField = "PollAnswerID";

                // enlazamos
                rblPollAnswers.DataBind();

            }
            catch (Exception ex)
            {
                Label1.Text = ex.Message;
            }
            finally
            {
                // cerramos la conexión sql 
                mySqlConnection.Close();
            }
        }

    }

    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
    }

    /// <summary>
    /// Gets or sets the poll ID.
    /// </summary>
    /// <value>The poll ID.</value>
    public int PollID
    {
        get
        {
            if (ViewState["PollID"] == null)
                return -1;
            else
                return (int)ViewState["PollID"];
        }
        set { ViewState["PollID"] = value; }
    }

</script>
<asp:RadioButtonList ID="rblPollAnswers" runat="server" /></pre>

¿Cómo llamar/ejecutar una función javascript/jquery desde C#? ASP.NET

Bueno el primer tip de este blog.

¿ Cómo llamar una función javascript desde C# en ASP.NET?

Imaginémonos que tenemos que necesitamos llamar una función javascript o jquery desde el code behind de asp.net. Pues la cuestion es muy sencilla.

Por ejemplo queremos ejecutar esta función:

Una función sencilla que lo que hará es mostrarnos un mensaje utilizando una alerta.

¿ En dónde podemos llamar esta función?

Bueno a mi se me ocurre que podemos llamarla en cualquier evento, de cualquier control (boton, combobox, radio button, etc).

Para el ejemplo utilizaremos el evento onClick del botón. Mi botón es el siguiente:

Ahora en el metodo asociado al evento ( code behing, c#) haremos lo siguiente:

Ejecutaremos el método, RegisterStartUpScript del objeto ClientScritp, en ella enviamos los siguientes parámetros.

1) Objeto tipo Type de la instancia actual, (de la página)

2) Un identificador string para la función javascript.

3) El nombre de la función javascript

 

Y el último parametro es un booleano, la verdad no entiendo muy bien su funcionalidad, solo sé que si quieres que te funcione bien, siempre debes de mandarle el valor true.

Ahora probemos, el ejemplo:

 

 

Tip #2: Ejecutar función javascript o jquery utilizando un UpdatePanel

La función que necesitamos ahora, pero ahora la buscaremos en el objeto ScriptManager

 

Y eso es todo, espero les sirva!

Saludos desde Guatemala.