domingo, 2 de agosto de 2009

DropdownList has a SelectedValue which is invalid because it does not exist in the list of items

O erro abaixo é causado quando a página contém um controle DropdownList preenchido com datasource, e um dos registros na tabela principal não possui registro na tabela relacionada.

DropdownList has a SelectedValue which is invalid because it does not exist in the list of items.

A solução que adotei foi incluir o parametro AppendDataBoundItems="True" para que seja possível adicionar itens novos ao controle DropDownList e uma rotina de tratamento no evento onDataBound do controle (ondatabound="ddlOrigem_DataBound") que executa uma verificação de existência do registro que será atribuído o estado de selecionado. Repare que através do try catch é possível evitar a apresentação de mensagens de erro.

Veja o código da função abaixo:

protected void ddlOrigem_DataBound(object sender, EventArgs e)
{
FormView fv = frmEditar;
DropDownList ddl = (DropDownList)fv.FindControl("ddlOrigem");

ddl = sender as DropDownList;
ddl.SelectedIndex = 0;
try
{
ddl.SelectedValue = ((GetDataItem() as DataRowView).Row["Conteudo_OrigemID"]).ToString();
}
catch { }
}

Nenhum comentário:

Postar um comentário