none
pregunta sobre una funcion y una lista RRS feed

  • Pregunta

  • buenos dias , tengo otra pregunta un tanto larga pero aca se las hago para ver si pueden ayudarme

    lo que necesito hacer es entrar en una lista en un sitio sharepoint y buscar por un numero de cedula que expedientes se ncuentran asociados a ese numero de cedula, y luego con ese numero de expediente, entrar a una biblioteca de documentos tambien en sharepoint y buscar que documentos estan asociados a este numero de expediente, y mostrarlos en una grilla, agradeceria su colaboracion ya que no tengo idea de como hacer esta operacion, gracias

    hugo bermudez

    martes, 12 de febrero de 2013 16:00

Respuestas

  • Hola Hugo.

    Te recomiendo que investigues en las consultas CAML en Sharepoint.

    La lógica a usar (una posibilidad) es mediante una consulta CAML, obtener los expedientes asociados al número de cédula.

    Luego almacenas los identificadores de estos expedientes, y de nuevo usando CAML, consutas la biblioteca de documento.

    Esto, obviamente, es una forma de hacerlo, y bastante simple. Si estás comenzando con Sharepoint, es recomendable que profundices con CAML.

    Aquí podés leer al respecto: http://www.gavd.net/servers/sharepoint/sps_item.aspx?top=cod&itm=247

    Luego, sino podrías hacerlo de manera más manual (pero menos performante). La cual sería iterando por todos los elementos de la lista. Algo así:

    SPList myList = web.Lists["Nombre de la lista"]; foreach( SPListItem item in myList.Items) { if ( item["NumeroCedula"] == variableConNumeroDeCedula) // almacenar el numero de expediente

    }

    Luego de almacenar los números de expediente, haces una consulta similar, pero esta vez contra la biblioteca de documentos.

    Saludos.-


    Marcos Alan Turrós - Microsoft Certified Technology Specialist

    martes, 12 de febrero de 2013 18:54
  • Hola,

    Por complementar la respuesta de Marcos, las posibilidades que tienes para hacer lo que necesitas son dos en mi opinión:

    • La primera opción por la que yo iría pensando en desarrollar rápido sería la de crear una WebPart (o WebParts conectadas) con todo lo necesario para implementar la funcionalidad de búsqueda qué comentas. Para realizar la búsqueda puedes usar CAML o bien en SharePoint 2010 LINQ To SharePoint...ten cuidado con el tipo de solución. Si es solución de tipo granja puedes usar LINQ To SharePoint sin problemas. Para soluciones Sandbox, puedes encontrarte problemas en la generación de consultas.
    • La segunda pasa por hacer lo mismo, pero usando modelo de objetos en cliente. En este caso tienes dos opciones interesantes: JavaScript o Silverlight...en cualquiera de los dos casos si tienes que usar CAML para las consultas.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.compartimoss.com
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    miércoles, 13 de febrero de 2013 7:24

Todas las respuestas

  • Hola Hugo.

    Te recomiendo que investigues en las consultas CAML en Sharepoint.

    La lógica a usar (una posibilidad) es mediante una consulta CAML, obtener los expedientes asociados al número de cédula.

    Luego almacenas los identificadores de estos expedientes, y de nuevo usando CAML, consutas la biblioteca de documento.

    Esto, obviamente, es una forma de hacerlo, y bastante simple. Si estás comenzando con Sharepoint, es recomendable que profundices con CAML.

    Aquí podés leer al respecto: http://www.gavd.net/servers/sharepoint/sps_item.aspx?top=cod&itm=247

    Luego, sino podrías hacerlo de manera más manual (pero menos performante). La cual sería iterando por todos los elementos de la lista. Algo así:

    SPList myList = web.Lists["Nombre de la lista"]; foreach( SPListItem item in myList.Items) { if ( item["NumeroCedula"] == variableConNumeroDeCedula) // almacenar el numero de expediente

    }

    Luego de almacenar los números de expediente, haces una consulta similar, pero esta vez contra la biblioteca de documentos.

    Saludos.-


    Marcos Alan Turrós - Microsoft Certified Technology Specialist

    martes, 12 de febrero de 2013 18:54
  • Hola,

    Por complementar la respuesta de Marcos, las posibilidades que tienes para hacer lo que necesitas son dos en mi opinión:

    • La primera opción por la que yo iría pensando en desarrollar rápido sería la de crear una WebPart (o WebParts conectadas) con todo lo necesario para implementar la funcionalidad de búsqueda qué comentas. Para realizar la búsqueda puedes usar CAML o bien en SharePoint 2010 LINQ To SharePoint...ten cuidado con el tipo de solución. Si es solución de tipo granja puedes usar LINQ To SharePoint sin problemas. Para soluciones Sandbox, puedes encontrarte problemas en la generación de consultas.
    • La segunda pasa por hacer lo mismo, pero usando modelo de objetos en cliente. En este caso tienes dos opciones interesantes: JavaScript o Silverlight...en cualquiera de los dos casos si tienes que usar CAML para las consultas.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.compartimoss.com
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    miércoles, 13 de febrero de 2013 7:24
  • gracias a todos por sus respuestas, al final utilice linq to sharepoint de la siguiente forma, para que consultas futuras a alguien le sirva

    internal DataTable BuscaDocumento(string tipo_doc, string prov_cednit)
            {
               HttpContext back = HttpContext.Current;
               HttpContext.Current = null;

               DataTable oDT = new DataTable();
               oDT.Columns.Add("idDocumento");
               oDT.Columns.Add("nombrDocumento");



               SPSecurity.RunWithElevatedPrivileges(delegate()
               {
                   Linq1DataContext context = new Linq1DataContext(GetURL("SPCerco"));
                   //Log("antes de linq");
                   //var ListaDocumentos = from item in context.DocumentosExpediente
                                         //select item;

                  

                   List<string> lstDocs = (from item in context.CertificadosContratistas
                                           where item.NumIdentificacion == prov_cednit
                                        select item.NumExpediente).ToList();

                var ListaDocumentos = from doc in context.DocumentosExpediente
                                      where lstDocs.Contains(doc.NumExpediente) && doc.Estado == Estado1.Firmado
                                      select new
                                      {
                                          idDocumento = doc.DocumentID,
                                          nombrDocumento = doc.Name

                                      };
                                         


                   foreach (var Documento in ListaDocumentos)
                   {
                       DataRow row = oDT.NewRow();
                       row["idDocumento"] = Documento.idDocumento;
                       row["nombrDocumento"] = Documento.nombrDocumento;

                       oDT.Rows.Add(row);

                   }

                   //Log("despues de linq");
               });

                
                        return (oDT);

                
            }

    lunes, 18 de febrero de 2013 14:54