2009-03-02 11 views
8

Hola, estoy desarrollando el uso del espacio de nombres de SharePoint y me encontré con el siguiente error cuando trato de recuperar una columna URL de uno de mis sitios.Error de lista de SharePoint: "El valor no está dentro del rango esperado"

"Value does not fall within the expected range" 

Todo lo que estoy haciendo es:

item["URL"] 

Puede alguien decirme lo que puedo hacer al respecto?

+0

qué idioma se utiliza? –

Respuesta

0

Esto generalmente significa que "URL" no es un campo en la lista.

Si se trata de una columna de InfoPath promocionada, intente desactivar y volver a activar la plantilla de formulario en el sitio. Me he dado cuenta de que tengo que hacer esto cada vez que agrego un nuevo campo promocionado a una plantilla de infopath.

+0

Está en la lista ... –

+0

¿Podría ser nulo en el 'elemento' en particular? – vapcguy

1

Para obtener la URL de SPListItem, use Item.Url.

+0

No es la URL que estoy buscando, estoy buscando una columna URL que creé. –

+0

Si se trata de una columna de InfoPath promocionada, intente desactivar y volver a activar la plantilla de formulario en el sitio. Me he dado cuenta de que tengo que hacer esto cada vez que agrego un nuevo campo promocionado a una plantilla de infopath. – Tundey

8

El error definitivamente significa que el campo no se puede encontrar.

Depure el proceso y observe la propiedad ListItem.Fields.SchemaXML para encontrar su nombre interno, se puede guardar internamente como algo distinto de URL. También puede usar el siguiente método para obtener un valor de elemento de lista.

SPField l_field = l_item.Fields.GetField("URL"); 
string l_fieldValue = l_item[l_field.Id].ToString(); 

El método GetField busca un terreno por tanto DisplayName & InternalName.

+0

Recomiendo el administrador de SharePoint para ver el esquema xml y otras cosas divertidas en SharePoint – Nat

+2

Dos puntos: no se olvide de la enumeración SPBuiltInFieldId, y asegúrese de que está utilizando la versión de SPQuery de GetItems que incluye los campos que desea en la parte de la consulta –

+1

Entonces, ¿por qué no puede compartir decir solo "campo no encontrado" o algo así? tal vez soy solo yo, pero estos mensajes de error son frustrantes. parece que solo están dejando que salten las excepciones para su código y luego dejan que el programador adivine ... – osiris

1
public static string GetItemURLValue(SPListItem item, string fieldName) 
    { 
     string exit = ""; 
     SPFieldUrlValue link = new SPFieldUrlValue(item[fieldName].ToString()); 
     exit = link.Url; 
     return exit; 
    } 
0

Hay un método especial para recuperar URL. Pruebe esto:

SPListItem li = ... 
SPFieldUrlValue fuv = new SPFieldUrlValue(li[strFieldName].ToString()); 
return fuv.Url; 
+1

Lo siento, veo que Ryan ha publicado una solución similar. – strongopinions

0

Mine es una aplicación de Windows. Solía ​​obtener esta excepción después de crear la configuración e intenté implementarla.

Mi aplicación necesitaba escribir en Excel y luego guardarla. Utilicé la referencia del componente COM 'Objeto Microsoft Excel 11.0'. Cuando agregué esta referencia, noté que en realidad aparecían 3 dll en mi lista de referencias.

  1. Microsoft.Office.Core
  2. Excel
  3. VBIDE

que elimina la referencia 'VBIDE' y mi problema está resuelto.

0

Si es sólo un nombre de columna y en la "línea de texto" formato, ¿qué pasa con:

item["URL"] != null ? item["URL"].ToString() : "Not Found"; 
Cuestiones relacionadas