Tenía un sitio creado con una lista, y otro sitio con listas y librerías.
La cuestión es que cada elemento de la lista del primer sitio, podía tener elementos relacionados en el segundo sitio. Para hacerse una idea, desde un elemento de la primera lista , hacia click en el y me redirigía al segundo sitio con un parametro IDElemento en la request.
/sitios/sitioDelElemento/default.aspx?IDElemento=12
de tal forma que los web part que muestro de las listas en este segundo sitio, estarán filtrados por una columna cuyo valor es igual IDElemento, es decir, que todas las listas y librerías de este sitio, disponen de una columna IDElemento , y cada vez que inserte un elemento lo asociaré al ID.
Hasta ahi muy bien, pero ... como asigno a un elemento que cree en el segundo sitio con el id correcto, es decir, cuando hago clic en un elemento del primer sitio y accedo al 2º para ver sus elementos asociados, teniendo un parametro en la request, si hago clic en Nuevo elemento de una de las listas, tengo que insertar la columna IDElemento por defecto con el valor de la request.
Para ello vi varias soluciones, unas cuantas mediante javascript:
http://patrikluca.blogspot.com/2008/01/how-to-set-default-values-based-on_20.html
http://sharepointstudio.markstokes.com/2006/05/pre-populate-listfields-on-sharepoint.html
Sin embargo me decante por la siguiente opcion:
Mediante la creación de un custom Control, desde donde tengo acceso a la request y puedo cojer el valor para rellenarlo.
Dentro de la funcion CreateChildControls del FieldControl.cs
txtUbicacion = (TextBox)TemplateContainer.FindControl("ParametroARellenar");
NameValueCollection pColl = System.Web.HttpContext.Current.Request.Params;
String[] arr1 = pColl.AllKeys;
for (int i = 0; i < arr1.Length; i++)
{
if (arr1[i].StartsWith("CalendarID"))
{
valueID = pColl.GetValues(i)[0];
}
txtUbicacion.Text = valueID;
Siendo txtubicacion un textbox definido en el fieldControl.aspx:
<SharePoint:RenderingTemplate ID="FieldControl" runat="server">
<Template>
<asp:TextBox ID="ParametroARellenar" runat="server" />
</Template>
</SharePoint:RenderingTemplate>
No hay comentarios:
Publicar un comentario