2009-03-04 12 views

Respuesta

0

Así es como SharePoint almacena enlaces. Primero, la URL y luego el Título que realmente se muestra en la página.

De la documentación de SharePoint:

"El campo URL consta únicamente de dos cadenas separadas por una coma y el espacio Una cadena contiene la ruta URL, y el otro contiene la descripción utilizada como texto con hipervínculos."

Tienes que dividir la cuerda para obtener dos partes.

string url = field["URL"].Split(',')[0]; 
string title = field["URL"].Split(',')[1]; 

El código no es óptimo, pero solo para mostrar exactamente lo que quiero decir.

Oliver, no especificó la versión de SharePoint. Mi respuesta es para la versión 2003. Si tiene MOSS, eche un vistazo a SPFieldUrl y SPFieldUrlValue clases.

6

Porque en el nivel más bajo, todos los campos Sharepoint se almacenan como cadenas. El método GetFieldValue de un SPField acepta una cadena, y depende de la lógica de esa clase de campo leer esa cadena y convertirla en un objeto de valor significativo.

item ["FieldName"] devuelve un objeto genérico que representa el valor del campo. Por sí mismo, el objeto suele ser inútil, excepto como la representación en cadena sin formato de los datos.

Si se utiliza el método GetFieldValueAsHtml(), devolverá <a href="url">title</a>:

//if field is of type Hyperlink, returns <a href="url">title</a> 
item.Fields["FieldName"].GetFieldValueAsHtml(item["FieldName"]) 

O

//if field is of type Hyperlink, returns Url, Title 
item.Fields["FieldName"].GetFieldValueAsText(item["FieldName"]) 

O

//if field is of type Hyperlink, returns Url 
item.Fields["FieldName"].GetValidatedString(item["FieldName"]) 
+0

que devolverá el código HTML para hacer que el valor del campo directamente en la página – muerte

+0

Gracias meurte, no se hizo contestar. –

+0

Eso es WSS 3.0 ¿verdad? – muerte

26

Puede extraer el actual Url y la Description del valor de la columna de esta manera:

SPFieldUrlValue fieldValue = new SPFieldUrlValue(myItem["URL"].ToString()); 

string linkTitle = fieldValue.Description; 

string linkUrl = fieldValue.Url; 
2

La propiedad URL SPListItem hace volver la dirección del SPListItem incluyendo el nombre de lista/Biblioteca Documetn, pero no devuelve la URL completa, incluyendo los servidores y nombres de sitio.

Para obtener la URL completa, puede concatenar el SPLIstItem.Web.Url y el SPListItem.URL, o extraer el URL completo del SPListItem.datos XML como este:

foreach (SPListItem item in list.Items) 
{ 
    XmlDocument xmlDoc = new XmlDocument(); 
    xmlDoc.LoadXml(item.Xml); 

    XmlNamespaceManager nsm = new XmlNamespaceManager(xmlDoc.NameTable); 
    nsm.AddNamespace("z", "#RowsetSchema"); 

    string fullURL = xmlDoc.SelectSingleNode("z:row", nsm).Attributes["ows_EncodedAbsUrl"].Value; 
} 

http://insomniacgeek.com/code/how-to-get-the-full-url-from-splistitem-in-sharepoint/

Cuestiones relacionadas