Meta datos de CRM 2011 desde SQL 2008

18 febrero, 2013 Deja un comentario

La siguiente instrucción en SQL nos permite conocer los meta datos de un picklist de CRM 2011

 

SELECT AttributeName,AttributeValue, Value   

FROM StringMap   

WHERE AttributeName  like ‘%Gender%’ 

 

Lo que hay que resaltar son 2 cosas.

 

  1. La tabla que consulta “StringMap” que contiene todos los picklist del CRM
  2. Como buscar el atributo en el where, con su nombre del campo en el CRM

 

Categorías:Sin categoría Etiquetas: ,

jQuery con Grids y Checkboxes

1 julio, 2012 Deja un comentario

El siguiente ejemplo muestra como hacer grupos de selección dentro de un gridview.

Para esto creo una clase que representara los items del grid (esto lo dejo a consideración de cada quien, también puede llenarse con Datatables y/o otras fuentes de datos.

public class ItemGrid
{
    public int Id { get; set; }
    public string Nombre { get; set; }
    public int GroupKey { get; set; }
}

El CodeBehind de la pagina será el siguiente:

public partial class Default : System.Web.UI.Page
{

    #region [Eventos]
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            cargaGrid();
        }
    }

    #region [Grid]
    protected void cargaGrid(){
        gvServicios.DataSource = GeneraRegistros();
        gvServicios.DataBind();
    }
    #endregion

    #endregion

    #region [Getters]
    public List<ItemGrid> GeneraRegistros()
    {
        List<ItemGrid> listado = new List<ItemGrid>();
        listado.Add(new ItemGrid() { Id = 1, Nombre = "Servicio 1", GroupKey = 1 });
        listado.Add(new ItemGrid() { Id = 2, Nombre = "Otro Servicio", GroupKey = 1 });
        listado.Add(new ItemGrid() { Id = 3, Nombre = "N servicio", GroupKey = 2 });
        listado.Add(new ItemGrid() { Id = 4, Nombre = "R Servicio", GroupKey = 3 });
        listado.Add(new ItemGrid() { Id = 5, Nombre = "segundo de N", GroupKey = 2 });
        listado.Add(new ItemGrid() { Id = 6, Nombre = "tercero de N", GroupKey = 2 });
        listado.Add(new ItemGrid() { Id = 7, Nombre = "R segundo", GroupKey = 3 });
        listado.Add(new ItemGrid() { Id = 8, Nombre = "R tercero", GroupKey = 3 });
        listado.Add(new ItemGrid() { Id = 9, Nombre = "muchos servicios", GroupKey = 1 });
        listado.Add(new ItemGrid() { Id = 10, Nombre = "Decimo Servicio", GroupKey = 1 });

        listado.Add(new ItemGrid() { Id = 11, Nombre = "Decimo Servicio", GroupKey = 1 });
        listado.Add(new ItemGrid() { Id = 12, Nombre = "Otro para el uno", GroupKey = 1 });
        listado.Add(new ItemGrid() { Id = 13, Nombre = "ya son muchos", GroupKey = 2 });
        listado.Add(new ItemGrid() { Id = 14, Nombre = "este es del 2 grupo", GroupKey = 2 });
        listado.Add(new ItemGrid() { Id = 15, Nombre = "Este es el ultimo", GroupKey = 1 });

        return listado;
    }
        
    #endregion
}

 

Ahora veamos el html y scripts

Primero el body:

<asp:GridView ID="gvServicios" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="Id" HeaderText="Identificador" />
                <asp:BoundField DataField="Nombre" HeaderText="Servicio" />
                <asp:TemplateField HeaderText="Grupo">
                    <ItemTemplate>
                        <asp:Label ID="lblGroupKey" runat="server" Text='<%# Eval("GroupKey") %>'></asp:Label>
                        <asp:HiddenField ID="IDVal" runat="server" Value='<%# Eval("GroupKey") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkType" runat="server"  onclick='<%# "SingleSelector(this," + Eval("GroupKey") +")" %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

El valor de GroupKey lo coloco en un hiddenfield, para manipularlo, y en un Label, para que se vea el grupo con el que se trabaja, en otra columna tendremos el check box: chkType, que llama a una función en jscript (SingleSelector) la cual tiene 2 parámetros, el primero es el mismo checkbox que lo llama, y el segundo parámetro es el identificador del grupo.

En el header tendremos la importación de jQuery, así como nuestra función de agrupamiento

<head runat="server">
    <title></title>
    <script src="Scripts/jQuery1.7.2.js" type="text/javascript"></script>
    <script type="text/jscript">
        
        function SingleSelector(chk, group) {
            var count = 0;
            //Recorrer todos los elementos del grid
            $('#gvServicios tr').each(function () {
                //Obtener el id del grupo seleccionado
                var vargrupo = $(this).find("input[id*='IDVal']").val();
                var selec = $(this).find("input[id*='chkType']");

                if (group == vargrupo) {
                    if (chk.name != selec.attr("name")) {
                        selec.attr("disabled", chk.checked == true ? true : false);
                        count++;
                    }
                }
            });
        }
    </script>
</head>

Lo primero que hace esta función es recorrer todos los elementos del grid, luego obtenemos el grupo que tiene ese renglón, y el check asociado a ese grupo. Lo siguiente a realizar es la comparativa del grupo, si son iguales, revisamos que sean diferentes el checkbox que se paso en la función, y el checkbox del renglón en el que nos encontramos, esto es para que el elemento que se esta seleccionado siempre este habilitado. Luego se establece para todos los elementos que no son el seleccionado y que pertenecen al grupo, como deshabilitados, si el checkbox que se paso en la función esta checkado.

Perdón si no es tan clara la redacción, pero a veces es mejor verlo en funcionamiento.

Gridj

Como se puede apreciar en la imagen, solo nos permitirá seleccionar un elemento del grupo a la vez.

 

Espero que les sea de utilidad.

jQuery datepicker y asp.net

25 mayo, 2012 Deja un comentario

Pues me puse a investigar como usar el datepicker de jQuery, ya que creo que es mas ligero que el de ajax.

Y en la implementación tenia que deshabilitar la entrada manual al textbox, pero o sorpresa, no se puede usar la opción de readonly, o de enabled del textbox, por que si no no funciona esto, y la solucion, la tenia también jQuery, resumamos el requerimiento

  • Bloquear el textbox
  • Formatear la fecha
  • disparar funcionalidad al seleccionar la fecha
  • Mostrar el datepicker a partir de una imagen
  • y aquí esta el código:

$('#txtFInicio').attr('disabled', true);
$('#txtFFinal').attr('disabled', true);
//Agregar datepickers
var imgurl = '<%= ResolveUrl("~/Images/calon.gif") %>';
$('#txtFInicio').datepicker({
showOn: 'button', buttonImageOnly: true, buttonImage: imgurl
, dateFormat: 'yy-mm-dd'
, onSelect: function () {
//Si la fecha final tiene valor, validar la fecha inicial
if ($('#txtFFinal').val() != "") {
if (!validaFechas($('#txtFInicio').val(), $('#txtFFinal').val())) {
alert("La fecha final debe ser mayor a la fecha inicial");
$('#txtFInicio').val("");
}
}
}
});
Para obtener la url de la imagen sin problemas uso la siguiente linea:
var imgurl = '<%= ResolveUrl("~/Images/calon.gif") %>';

El metodo ResolveURL es un metodo de .Net que convierte la url en algo entendible, ya que como recordaran la tilde ~ nos manda a raíz del directorio, pero eso no lo interpreta el html, si no .Net, y esta rutina se encarga de convertirlo en algo que el html pueda interpretar.

Bueno eso es todo lo necesario

Checkboxlist y jQuery II

25 mayo, 2012 1 comentario

Bueno en el post pasado, especifique como obtener todos los valores seleccionados. Ahora veamos como ver si un valor en especifico del listado esta seleccionado. cabe mencionar que es importante saber cuantos elementos hay en el listado, para ir a ese índice y validarlo.

var Complementarios = $('#<%=chkOptions.ClientID%> :checkbox')[0].checked ? 0 : 1;

lo que hago es validar el checkbox por su índice, y evalúo si esta seleccionado o no.

Y de pilón agrego como deseleccionar todos los elementos dentro de un checkboxlist. personalícenlo si necesitan hacer lo contrario.

$('#<%=chklist.ClientID%> input:checkbox:checked').each(function () {
$(this).attr('checked', false);
});

Checkboxlist y jQuery I

25 mayo, 2012 Deja un comentario

Primero vamos a ver como se obtienen todos los elementos seleccionados de un checkboxlist. Para eso tenemos el siguiente codigo

function obtenerGuidsServicios() {
var seleccion = "";
$('#<%=chklist.ClientID%> input:checkbox:checked').each(function () {
//seleccion += $(this).parent().text() + ","; //para el texto
if (seleccion.length == 0) {
seleccion = $(this).val();
}
else {
seleccion += "," + $(this).val(); //
}
});
return seleccion;
}

Es importante tener la variable donde se van a arrojar los valores de la selección. en este caso hago una concatenación de esos valores por una coma, pero la idea general es lo importante.

También tengo entre comentarios, como obtener el valor del texto asociado a ese chechbox dentro del listado

Radiobuttonlist desde jQuery

25 mayo, 2012 2 comentarios

 

Lo que necesitaba hacer era obtener el indice seleccionado del radiobuttonlist para que dependiendo de eso, realizar mas acciones (sencillo no?).

El chiste era obtener el acceso adecuado a la estructura html del radiobuttonlist.

 

bueno aquí esta el código

 

 

//Seleccion del radio buton para filtros
$('#<%=rblopc2.ClientID%> :radio').click(function () {
//casos
switch ($('#<%=rblopc2.ClientID%> input').index(this)) {
case 0:
//Mostrar un div
$('#<%=dvRangos.ClientID%>').show();

//Funcionalidad

break;
case 1:
//
$('#<%=dvServicios.ClientID%>').show();
HideFechas();
break;
case 2:
//Funcionalidad

break;
}
});

Las limitantes que encuentro, es que se deben saber que valores puede tomar el radiobuttonlist, ya que a partir de ahí se realizarían los casos para la funcionalidad

Categorías:.NET, ASP.NET, jQuery Etiquetas: , ,

Iterar un Gridview con Linq

25 mayo, 2012 Deja un comentario

Para iterar el gridview debemos obtener la colección de registros de forma que sea IEnumerable

Eso es con el método Cast.

Adicionalmente se obtienen las columnas que se necesiten del grid

var rows = GridView1.Rows.Cast<GridViewRow>().Select(a => new
            {
                ID = Convert.ToInt32(a.Cells[0].Text),
                FirstName = a.Cells[1].Text,
                LastName = a.Cells[2].Text
            }).ToList();

Finalmente se obtiene el listado de esa operación, y se manipula a consideración

Categorías:.NET, C#, Linq, Visual Studio 2010 Etiquetas: , , ,