Mostrando las entradas con la etiqueta controles. Mostrar todas las entradas
Mostrando las entradas con la etiqueta controles. Mostrar todas las entradas

jueves, septiembre 14, 2006

jueves, abril 06, 2006

viernes, febrero 03, 2006

[C#]SmartNavigation Control para .Net 1.1

Mi amigo del foro PC++, Paleta, escribio este control para .Net Framework 1.1, ya que el SmartNavigation en este framework no funciona muy bien, y no es compatible con Firefox.

Para quienes no sepan que es SmartNavigation, es una funcionalidad que nos permite mantener la posicion de la barra de scroll luego de cada PostBack. Esto nos es muy util cuando tenemos Abms muy largos o solo queremos decir que somos re capos y mantenemos el scroll luego de cada postback. tagPrefix:SmartNavigation

Código:

using System;
using System.Text;
using System.Web.UI;

using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

namespace Petrobras.CDS.Framework.Controls.Web
{
[ToolboxData("<{0}:SmartNavigation runat=server></{0}:SmartNavigation>")]

public class SmartNavigation: ViewstatedControl
{
public SmartNavigation()
{

//
// TODO: Add constructor logic here
//

}
private const string XPosId = "XPos";
private const string YPosId = "YPos";

private void CreateJavaScript()
{
string NL = Environment.NewLine;
StringBuilder script = new StringBuilder();

script.Append("<script type=\"text/javascript\">" + NL);
script.Append("function SetScrollerPosition()" + NL);

script.Append("{" + NL);
script.Append("\tif (document.getElementById('" + XPosId + "').value != '')" + NL);

script.Append("\t{" + NL);
script.Append("\t\tvar x = document.getElementById('" + XPosId + "').value;" + NL);

script.Append("\t\tvar y = document.getElementById('" + YPosId + "').value;" + NL);
script.Append("\t\twindow.scrollTo(x, y);" + NL);

script.Append("\t}" + NL);
script.Append("\tdocument.getElementById('" + XPosId + "').value = '0';" + NL);

script.Append("\tdocument.getElementById('" + YPosId + "').value = '0';" + NL);
script.Append("}" + NL);

script.Append("function GetScrollerPosition()" + NL);
script.Append("{" + NL);

script.Append("\tvar scrollX, scrollY;" + NL);
script.Append("\tif (document.all)" + NL);

script.Append("\t{" + NL);
script.Append("\tif (!document.documentElement.scrollLeft)" + NL);

script.Append("\t\tscrollX = document.body.scrollLeft;" + NL);
script.Append("\telse" + NL);

script.Append("\t\tscrollX = document.documentElement.scrollLeft;" + NL);
script.Append("\tif (!document.documentElement.scrollTop)" + NL);

script.Append("\t\tscrollY = document.body.scrollTop;" + NL);
script.Append("\telse" + NL);

script.Append("\t\tscrollY = document.documentElement.scrollTop;" + NL);
script.Append("\t}" + NL);

script.Append("\telse" + NL);
script.Append("\t{" + NL);

script.Append("\t\tscrollX = window.pageXOffset;" + NL);
script.Append("\t\tscrollY = window.pageYOffset;" + NL);

script.Append("\t}" + NL);
script.Append("\tdocument.getElementById('" + XPosId + "').value = scrollX;" + NL);

script.Append("\tdocument.getElementById('" + YPosId + "').value = scrollY;" + NL);
script.Append("}" + NL);

script.Append("if(window.addEventListener)" + NL);
script.Append("\twindow.addEventListener('onscroll',GetScrollerPosition,false);" + NL);

script.Append("else if(window.attachEvent)" + NL);
script.Append("\twindow.attachEvent('onscroll',GetScrollerPosition);" + NL);

script.Append("else" + NL);
script.Append("\twindow.onscroll = GetScrollerPosition;" + NL);

script.Append("SetScrollerPosition();" + NL);
script.Append("</script>" + NL);

if(!Page.IsStartupScriptRegistered("SmartNavigation"))
Page.RegisterStartupScript("SmartNavigation",script.ToString());

}
protected override void OnPreRender(EventArgs e)
{
CreateJavaScript();

base.OnPreRender (e);
}

public int XValue

{
get
{

if(!Page.IsPostBack)
return 0;
try

{
if(Page.Request.RequestType == "GET")

return int.Parse(Page.Request.QueryString[XPosId]);
else if(Page.Request.RequestType == "POST")

return int.Parse(Page.Request.Form[XPosId]);
else

return 0;
}
catch(System.Exception)

{
return 0;
}

}
}
public int YValue
{

get
{
if(!Page.IsPostBack)

return 0;
try
{

if(Page.Request.RequestType == "GET")
return int.Parse(Page.Request.QueryString[YPosId]);

else if(Page.Request.RequestType == "POST")
return int.Parse(Page.Request.Form[YPosId]);

else
return 0;

}
catch(System.Exception)
{

return 0;
}
}

}


protected override void Render(HtmlTextWriter writer)
{

Page.VerifyRenderingInServerForm(this);
writer.WriteLine("<input type=\"hidden\" name=\"" + XPosId +

"\" id=\"" + XPosId + "\" value=\"" + XValue + "\" />");

writer.WriteLine("<input type=\"hidden\" name=\"" + YPosId +

"\" id=\"" + YPosId + "\" value=\"" + YValue + "\" />");

}
}
}




Su forma de uso es simple:

<tagPrefix:SmartNavigation id="smartNav" runat="server"></tagPrefix:SmartNavigation>

jueves, agosto 11, 2005

[ASP.NET] Controles Gratuitos

  • skmMenu - Muy lindo control para hacer menus desplegables.
  • obout inc - Varios controles muy buenos, un treeview, un slide menu, un calendar, un esay menu y un splitter que es un control para dividir la page sin usar frames , pero que funcionan como tales.
  • TEdit.NET - como un datagrid pero mejor, te permite que el usuario lo edite muy facilmente.
  • Rekenwonder - un Schedule control que aparenta estar muy bueno.
  • PopUp Control - muy bueno.... me puede ayudar mucho.
  • HierarGrid - un lindo datagrid.

Y por ultimo cuatro sites donde hay varios y de todo tipo de asp.net controls.