sharepoint sharepoint-2007 postback web-parts

sharepoint - ¿Implementar correctamente un webpart con postback?



sharepoint-2007 web-parts (4)

Suena como un problema de tiempo de evento ASP.NET. Intente llamar a EnsureChildControls () en el evento de carga de página. Esto garantiza que se llame a su método CreateChildControls () y que sus controles se agreguen a la página antes de que se manejen los eventos posteriores a la publicación. Si los controles se agregan por primera vez en la etapa PreRender o Render, será demasiado tarde para que recojan los datos de la publicación posterior. Entonces no verá el cambio antes de la carga de la página siguiente.

Lo que intento hacer es crear un elemento web que tenga un cuadro de texto donde pueda establecer el valor de un literal (h2) en la parte web y un botón "guardar" que publique y luego establezca el literal en consecuencia. Esto funciona con una gran advertencia; cuando la página se carga después de la devolución, el literal no se ha modificado. Sin embargo, si registro lo que realmente está configurado en el literal, tiene el nuevo valor. Además, si vuelvo a cargar la página (F5), se muestra correctamente.

Al principio pensé que debía ser ViewState, así que lo deshabilité para todos los controles. Verifiqué que no se está guardando en ViewState (lo decodificó). Entonces ViewState no está guardando el valor anterior.

Estoy usando "CreateChildControls" para agregar mis controles a la parte web. y la devolución de datos es manejada por un controlador de eventos simple.

¿Algunas ideas?

Para el registro, estoy usando MOSS 2007.



Siempre puede usar un panel de actualización AJAX, soltar su control literal y llamar a UDP.Update en el panel de actualización. También con su ejemplo inicial, compruebe que tiene runat="server" en su control literal. Debería poder agregar un cambio al evento Page_Load y esto debería aparecer en la parte web.


Aquí hay una sugerencia. Funciona para mí de todos modos.

using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; namespace Skaar.UI { public class PostBackWebPart:WebPart { private Literal literal; private TextBox textBox; protected override void OnInit(System.EventArgs e) { base.OnInit(e); literal=new Literal(); literal.Mode = LiteralMode.PassThrough; Controls.Add(literal); textBox=new TextBox(); textBox.AutoPostBack = true; Controls.Add(textBox); textBox.TextChanged += textBox_TextChanged; } void textBox_TextChanged(object sender, System.EventArgs e) { literal.Text = string.Format("<h1>{0}</h1>", textBox.Text); } } }