aspxtextbox aspxmemo asp.net data-binding

asp.net - aspxmemo - SelectedValue que no es válido porque no existe en la lista de elementos



aspxtextbox demo (9)

Aparentemente la solución que publiqué no fue del todo efectiva ... Eventualmente en mi aplicación cambié a esto:

listOrgs.Items.Clear(); listOrgs.SelectedIndex = -1; listOrgs.SelectedValue = null; listOrgs.ClearSelection(); // Clears the selection to avoid the exception (only one of these should be enough but in my application I needed all..) listOrgs.DataSource = new Organization().DTListAll(SiteID); listOrgs.DataTextField = "OrganizationName"; listOrgs.DataValueField = "OrganizationID"; listOrgs.DataBind();

Encuentro este problema repetidamente y no tengo ni idea de qué lo está causando. Obtengo una excepción en DataBind: SelectedValue which is invalid because it does not exist in the list of items .

Aquí hay algunos datos importantes:

  1. Recargo listOrgs periódicamente cuando los datos subyacentes han cambiado.
  2. La llamada Organization.DTListAll devuelve 2 Int, String pairs.
  3. No hay valores duplicados o nulos en los datos devueltos
  4. Después de las dos primeras líneas a continuación, listOrgs.Items.Count es 0 y el valor seleccionado es 0
  5. El valor seleccionado después de que se ejecuta la operación DataBind es el valor ID de la primera fila en los datos
  6. Esta excepción ocurre la primera vez que se ejecuta este código después de una carga de página nueva

listOrgs.Items.Clear(); listOrgs.SelectedValue = "0"; listOrgs.DataSource = new Organization().DTListAll(SiteID); listOrgs.DataTextField = "OrganizationName"; listOrgs.DataValueField = "OrganizationID"; listOrgs.DataBind();


Cambia las primeras dos líneas con esto:

listOrgs.SelectedItem.Selected = false; listOrgs.Items.Clear();


En caso de que todavía tenga este problema, así es como lo resolví:

listOrgs.SelectedIndex = -1; // Clears the SelectedIndex to avoid the exception listOrgs.DataSource = new Organization().DTListAll(SiteID); listOrgs.DataTextField = "OrganizationName"; listOrgs.DataValueField = "OrganizationID"; listOrgs.DataBind(); //Unless you have "listOrgs.AppendDataBoundItems = true" you don''t need to clear the list


Intenta configurar listOrgs.SelectedValue = "0" después de actualizar el DataSource

En este momento está tratando de seleccionar el primer elemento en una lista vacía.


La respuesta de @PMarques me ayudó y resolvió mi problema.

Sin embargo, mientras experimentaba, en primer lugar me hizo un clic en la cabeza por la cual estaba obteniendo el error.

Estaba configurando el atributo "Texto" pensando que podría crear una etiqueta que abarque o fieldset + legend, para mí (que no es así).

La propiedad Text para una lista es de hecho la propiedad SelectedValue para un ListControl.

Entonces mi error al malinterpretar lo que hizo la propiedad del texto.


No estoy seguro de que sea su caso, pero tuve el mismo problema y aparentemente no hubo ninguna explicación, entonces me di cuenta de que estaba copiando y pegando en el bloc de notas de un campo de base de datos que al comienzo del valor había un NULL.

Lo curioso fue que funcionaba una selección de tablas de unión. Borré la fila y la reinserté, después de que funcionaba bien.


Recibí el mismo error varias veces e intento terminar no estableciendo el valor seleccionado predeterminado en el Índice -1.

ddlDRIBidAmt.SelectedValue = -1 mi código ddlDRIBidAmt.SelectedValue = -1

Este valor se estableció en el momento en que mis controles de página se restablecieron a los valores predeterminados.


Sé que es demasiado tarde para responder, pero lo que probé es una solución sucia, pero funcionó. Después del enlace de datos, inserto un elemento en el índice 0

ddl.Items.Insert(0, new ListItem("---Select---","-1"));

Y en el ajuste,

Estoy colocando try catch, En catch estoy configurando Value en -1


Seguí recibiendo este error.
Lo extraño es que antes de establecer el origen de datos y volver a enlazar después de eliminar un elemento, el índice seleccionado = -1 .

Si configuro explícitamente el selectedIndex = -1; entonces funciona y no arroja un error.

Así que, aunque ya estaba -1 estableciéndolo en -1, evita que se produzca un error.

¿Extraño eh?