FindByValue sur ASP.NET DropDownList
J'ai le code suivant dans une coutume de contrôle de l'utilisateur qui contient un DropDownList nommé ddlAggerationUnitId. La DropDownList est DataBind avais sur le Page_Load() de l'événement. La "valeur" est réglé à 40 et il N'existe pas. Si je supprime la logique de la méthode set le chargement de la page et sélectionner le bon élément, mais si la valeur est faux la page lève une exception. Je voudrais éviter que l'exception, en voyant si la valeur existe AVANT d'essayer de le définir, c'est pourquoi la logique est nécessaire.
Pour l'instant il semble comme le compilateur est en train d'évaluer si l'instruction comme faux, même si je sais que pour un fait, il doit être vrai.
public long? Value
{
get { return Int64.Parse(ddlAggerationUnitId.SelectedItem.Value); }
set
{
if (ddlAggerationUnitId.Items.FindByValue(value.ToString()) != null)
{
ddlAggerationUnitId.SelectedValue = value.ToString();
}
}
}
Toute aide serait grandement appréciée! Merci!
EDIT: Voici mon Page_Load() de l'événement:
protected void Page_Load(object sender, EventArgs e)
{
ddlAggerationUnitId.DataSource = ExternalAccount.GetAggregationUnits();
ddlAggerationUnitId.DataTextField = "Value";
ddlAggerationUnitId.DataValueField = "Key";
ddlAggerationUnitId.DataBind();
}
L'entourer d'essayer de les attraper et de le faire dans le catch ddlAggerationUnitId.SelectedValue = -1. Juste un travail autour de.
Édité question ci-dessus pour inclure Page_Load.
Est la liste déroulante, NULL, car il essaie de définir la SelectedValue AVANT DataBind?
OriginalL'auteur mhenry | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Le code suivant fonctionne pour l'instant, cependant, je pense que c'est un peu étrange de DataBind deux fois. Cela confirme mes soupçons que les données soient liées APRÈS FindByValue()?
N'importe qui ont des idées sur la façon de nettoyer ce code?
OriginalL'auteur mhenry
voir si le code suivant vous permet de
mis à jour page_load
Toujours pas correctement le réglage de la SelectedValue.
Si j'ai ajouté les lignes suivantes au-DESSUS de ListItem item = null cela fonctionne: BindDdlAggerationUnitId(); ddlAggerationUnitId.SelectedIndex = -1;
OriginalL'auteur Saar
Page_Load devrait être:
C'est tout à fait possible, ce code est de la demander et où? C'est la grande question. Je vous recommande également le déplacement de la liaison logique pour Page_Init à la place.
OriginalL'auteur Brian Mains
Juste un travail autour de:
Désolé sa SelectedIndex
OriginalL'auteur franklins