miércoles, 30 de septiembre de 2009

Usar jQuery con MasterPage

Si alguien ha intentado usar las librerias de jQuery en una proyecto asp.net que las páginas hereden de una página maestra, se habra dado cuenta de que jQuery no funciona. Esto es debido a que la página maestra se encuentra en un nivel de directorios distintos al que se encuentras las paginas hijas. Para solucionar podemos utilizar un pequeño truco, para referenciar el archivo de jquery en la MasterPage lo haremos de la sigueinte manera:
<script src="<%= Page.ResolveUrl("~/Js/ui.core.js") %>"
 language="javascript" type="text/javascript"></script>

miércoles, 9 de septiembre de 2009

Posicionar ModalPopupExtender desde Javascript

Para realizar esto primero tendremos que asignar un manejador al evento Show del control Modal :
function pageLoad() {        
$find('<%= ModalPopupPermisosSinGrid.ClientID  %>').add_showing(onshowing);
}
Una vez hemos capturado el evento Show, definimos la posición de la ventana modal. En este caso la posición depende del tamaño de la pantalla.
function onshowing() {          
var alto = screen.height;
var posicion_Y = alto / 20;        
//seria el mismo funcionamiento para la cordenado X 
$find('<%= ModalPopupPermisosSinGrid.ClientID  %>').set_Y(posicion_Y);
}

martes, 1 de septiembre de 2009

Ordenar ListItemCollection

Cuando tenemos un control como puede ser un DropDownList ó un ListBox, es posible que necesitemos mostrar los elementos de forma ordenada. Para ello dependiendo de la forma que hayamos cargado el control, la ordenación sera mas o menos sencilla. En el caso de que nuestro control este enlazado a datos, la forma más sencilla seria ordenar los elementos antes de ser enlazados. Existen otros escenarios en los que podemos permitir al usuario manipular esa lista o bien el caso típico que tenemos dos listbox en los que podemos pasar datos de uno al otro. Para esto tendremos que convertir la colección de items a un array y mediante LinQ realizamos la ordenación. La función podria ser la siguiente:
private void OrdenarListBox(ListBox listBoxControl)
{

   //se convierte la coleccion de items a un array
   ListItem[] myListItemArray = new ListItem[listBoxControl.Items.Count];
  lbxRecursosAsignados.Items.CopyTo(myListItemArray, 0);
   //mediante linq se ordena el array por el campo Texto del item
   IEnumerable<ListItem> query = from r in myListItemArray orderby r.Text ascending select r;
   //se enlaza el array al control
   lbxRecursosAsignados.DataSource = query;
   lbxRecursosAsignados.DataBind();
}