Archive for the 'ASP.Net' Category

ASP.NET AJAX 1.0 RC disponible

Microsoft ha liberado la primera release candidate de Ajax (la versión definitiva cada vez más cerca).
Entre las nuevas características que podemos encontrar se encuentra:

  • Soporte de globalización
  • Invocación dinámica de proxies para servicios web
  • Cambios en el namespace y assemblies para asegurar la compatibilidad entre Ajax 1.0 y el futuro Ajax 1.0 incluido en el futuro Orcas.

Se supone que la versión definitiva saldrá en enero e incluirá instalación sencilla para sistemas no windows.
Tambien se ha liberado ASP.NET AJAX Control Toolkit Released for ASP.NET AJAX RC (importante)

Aquí dejo los links de todo.

Bien esto parace que esto de las betas ha llegado a su final y llega el momento de la release definitiva.

Anuncios

Mantener la posición en un Treeview con ASP.Net y ASP.Net Ajax después de un postback

En este post veremos como mantener a la vista la posición actual de un nodo elegido en un treeview después de que este ha sido seleccionado y que por lo tanto se produce un postback.

Lo he traducido en parte y creo que mejorado de un artículo que leí en developer.com

Si no se han dado cuenta, después de elegir un nodo en el treeview y al producirse dicho postback, el treeview vuelve a a posicionarse en el primer nodo superior del mismo, si el elegido no cabe en pantalla, pues ¿que sucedera?, pues que no se verá.

Veremos como solucionarlo tanto con ASP.Net como con ASP.Net Ajax.
Lo lograremos gracias a ejecutar un código javascript cada vez que se realice el postback.

 Veamos primero dos imágenes que muestran lo que sucede sin dicho código javascript.

Después de elegir nodo se reposiciona el treeview en su lado superior.

ASP.Net
El código asp.net es bien sencillo, simplemente ponemos el treeview dentro de un panel y en la sección body cargamos el script en cuestión.

<body onload=”CargarScriptLoad()”>
<form id=”form1″ runat=”server”>
<div>
<asp:Panel ID=”Panel1″ runat=”server”>
<asp:TreeView ID=”TreeView1″ runat=”server”>
</asp:TreeView>
</asp:Panel>
</div>
</form>

Y en el codebehind.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘ CARGA TODOS LOS EVENTOS DE INICIO
Me.CargarEventosInicio()

If Me.Page.IsPostBack Then Return

Me.RellenarTreeView()
End Sub

Public Sub CargarEventosInicio()
Me.SriptsLoad()
End Sub
Private Sub RellenarTreeView()
‘ RELLENA TREEVIEW DE EJEMPLO
Me.TreeView1.Nodes.Clear()

Dim _Nodo1 As New TreeNode(“Nodo 1”)
Me.TreeView1.Nodes.Add(_Nodo1)
Dim _Nodo2 As New TreeNode(“Nodo 2”)
Me.TreeView1.Nodes.Add(_Nodo2)
Dim _Nodo3 As New TreeNode(“Nodo 3”)
Me.TreeView1.Nodes.Add(_Nodo3)
Dim _Nodo4 As New TreeNode(“Nodo 4”)
Me.TreeView1.Nodes.Add(_Nodo4)
Dim _Nodo5 As New TreeNode(“Nodo 5”)
Me.TreeView1.Nodes.Add(_Nodo5)

Dim I As Integer
For I = 1 To 70
_Nodo1.ChildNodes.Add(New TreeNode(“Nodo 1/ ” + I.ToString()))
_Nodo2.ChildNodes.Add(New TreeNode(“Nodo 2/” + I.ToString()))
_Nodo3.ChildNodes.Add(New TreeNode(“Nodo 3/” + I.ToString()))
_Nodo4.ChildNodes.Add(New TreeNode(“Nodo 4/” + I.ToString()))
_Nodo5.ChildNodes.Add(New TreeNode(“Nodo 5/” + I.ToString()))
Next

Me.TreeView1.CollapseAll()

End SubPublic Sub SriptsLoad()

Dim _Script As New StringBuilder

‘ SCRIPT PARA POSICIONAR TREEVIEW EN EL SELECCIONADO
_Script.Append(“function CargarScriptLoad()”)
_Script.Append(“{{“)
_Script.Append(“try”)
_Script.Append(“{{“)
_Script.Append(“var elem = document.getElementById(‘{0}_SelectedNode’);”)
_Script.Append(“if(elem != null )”)
_Script.Append(“{{“)
_Script.Append(“var node = document.getElementById(elem.value);”)
_Script.Append(“if(node != null)”)
_Script.Append(“{{“)
_Script.Append(“node.scrollIntoView(true);”)
_Script.Append(“{1}.scrollLeft = 0;”)
_Script.Append(“}}”)
_Script.Append(“}}”)
_Script.Append(“}}”)
_Script.Append(“catch(oException)”)
_Script.Append(“{{}}”)
_Script.Append(“}}”)
_Script.Append(“”)
_Script.Append(“”)

Me.Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), “EventoLoad_1”,String.Format(_Script.ToString, TreeView1.ClientID, Panel1.ClientID), True)
End Sub

Esto es todo, quizás lo más complicado de entender es el javascript, realmente lo único que hace es crear una función, que trabaja con el elemento seleccionado del treeview, y mueve el scroll del panel hasta la posición correcta.

ASP.Net Ajax
En ASP.Net Ajax el codebehind es exactamente igual, lo único que cambia es la adición de un scriptmanager, el updatepanel, el contentpanel y el trigger correspondiente.

<body onload=”CargarScriptLoad()”>
<form id=”form1″ runat=”server”>
<asp:ScriptManager ID=”ScriptManager1″ runat=”server” />

<div>
<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
<ContentTemplate>
<asp:Panel ID=”Panel1″ runat=”server”>
<asp:TreeView ID=”TreeView1″ runat=”server”>
</asp:TreeView>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID=”TreeView1″ />
</Triggers>
</asp:UpdatePanel>
</div>

</form>
</body>

Resultado final.

Bueno, espero haberme explicado.

Mantener la posición en un Treeview con ASP.Net y ASP.Net Ajax después de un postback

En este post veremos como mantener a la vista la posición actual de un nodo elegido en un treeview después de que este ha sido seleccionado y que por lo tanto se produce un postback.

Lo he traducido en parte y creo que mejorado de un artículo que leí en developer.com

Si no se han dado cuenta, después de elegir un nodo en el treeview y al producirse dicho postback, el treeview vuelve a a posicionarse en el primer nodo superior del mismo, si el elegido no cabe en pantalla, pues ¿que sucedera?, pues que no se verá.

Veremos como solucionarlo tanto con ASP.Net como con ASP.Net Ajax.
Lo lograremos gracias a ejecutar un código javascript cada vez que se realice el postback.

 Veamos primero dos imágenes que muestran lo que sucede sin dicho código javascript.

Después de elegir nodo se reposiciona el treeview en su lado superior.

ASP.Net
El código asp.net es bien sencillo, simplemente ponemos el treeview dentro de un panel y en la sección body cargamos el script en cuestión.

<body onload=”CargarScriptLoad()”>
<form id=”form1″ runat=”server”>
<div>
<asp:Panel ID=”Panel1″ runat=”server”>
<asp:TreeView ID=”TreeView1″ runat=”server”>
</asp:TreeView>
</asp:Panel>
</div>
</form>

Y en el codebehind.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘ CARGA TODOS LOS EVENTOS DE INICIO
Me.CargarEventosInicio()

If Me.Page.IsPostBack Then Return

Me.RellenarTreeView()
End Sub

Public Sub CargarEventosInicio()
Me.SriptsLoad()
End Sub
Private Sub RellenarTreeView()
‘ RELLENA TREEVIEW DE EJEMPLO
Me.TreeView1.Nodes.Clear()

Dim _Nodo1 As New TreeNode(“Nodo 1”)
Me.TreeView1.Nodes.Add(_Nodo1)
Dim _Nodo2 As New TreeNode(“Nodo 2”)
Me.TreeView1.Nodes.Add(_Nodo2)
Dim _Nodo3 As New TreeNode(“Nodo 3”)
Me.TreeView1.Nodes.Add(_Nodo3)
Dim _Nodo4 As New TreeNode(“Nodo 4”)
Me.TreeView1.Nodes.Add(_Nodo4)
Dim _Nodo5 As New TreeNode(“Nodo 5”)
Me.TreeView1.Nodes.Add(_Nodo5)

Dim I As Integer
For I = 1 To 70
_Nodo1.ChildNodes.Add(New TreeNode(“Nodo 1/ ” + I.ToString()))
_Nodo2.ChildNodes.Add(New TreeNode(“Nodo 2/” + I.ToString()))
_Nodo3.ChildNodes.Add(New TreeNode(“Nodo 3/” + I.ToString()))
_Nodo4.ChildNodes.Add(New TreeNode(“Nodo 4/” + I.ToString()))
_Nodo5.ChildNodes.Add(New TreeNode(“Nodo 5/” + I.ToString()))
Next

Me.TreeView1.CollapseAll()

End SubPublic Sub SriptsLoad()

Dim _Script As New StringBuilder

‘ SCRIPT PARA POSICIONAR TREEVIEW EN EL SELECCIONADO
_Script.Append(“function CargarScriptLoad()”)
_Script.Append(“{{“)
_Script.Append(“try”)
_Script.Append(“{{“)
_Script.Append(“var elem = document.getElementById(‘{0}_SelectedNode’);”)
_Script.Append(“if(elem != null )”)
_Script.Append(“{{“)
_Script.Append(“var node = document.getElementById(elem.value);”)
_Script.Append(“if(node != null)”)
_Script.Append(“{{“)
_Script.Append(“node.scrollIntoView(true);”)
_Script.Append(“{1}.scrollLeft = 0;”)
_Script.Append(“}}”)
_Script.Append(“}}”)
_Script.Append(“}}”)
_Script.Append(“catch(oException)”)
_Script.Append(“{{}}”)
_Script.Append(“}}”)
_Script.Append(“”)
_Script.Append(“”)

Me.Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), “EventoLoad_1”,String.Format(_Script.ToString, TreeView1.ClientID, Panel1.ClientID), True)
End Sub

Esto es todo, quizás lo más complicado de entender es el javascript, realmente lo único que hace es crear una función, que trabaja con el elemento seleccionado del treeview, y mueve el scroll del panel hasta la posición correcta.

ASP.Net Ajax
En ASP.Net Ajax el codebehind es exactamente igual, lo único que cambia es la adición de un scriptmanager, el updatepanel, el contentpanel y el trigger correspondiente.

<body onload=”CargarScriptLoad()”>
<form id=”form1″ runat=”server”>
<asp:ScriptManager ID=”ScriptManager1″ runat=”server” />

<div>
<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
<ContentTemplate>
<asp:Panel ID=”Panel1″ runat=”server”>
<asp:TreeView ID=”TreeView1″ runat=”server”>
</asp:TreeView>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID=”TreeView1″ />
</Triggers>
</asp:UpdatePanel>
</div>

</form>
</body>

Resultado final.

Bueno, espero haberme explicado.


diciembre 2018
L M X J V S D
« Dic    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Sindicación

NetMania y la Web

Internet Blog Serial Number 01-10-2006-02

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons


Otros


Añadir a Favoritos de Technorati

Añadir a Netvibes

Añadir a Google

Unión de Bloggers Hispanos

nubes

Anuncios