2008-10-02 10 views
1

Définition des variables utilisées:C#, ASP.NET - NullReferenceException - Référence d'objet non définie à une instance d'un objet

Guid fldProId = (Guid)ffdPro.GetProperty("FieldId"); 
string fldProValue = (string)ffdPro.GetProperty("FieldValue"); 
FormFieldDef fmProFldDef = new FormFieldDef(); 
fmProFldDef.Key = fldProId; 
fmProFldDef.Retrieve(); 
string fldProName = (string)fmProFldDef.GetProperty("FieldName"); 
string fldProType = (string)fmProFldDef.GetProperty("FieldType"); 

lignes donnant le problème (en particulier la ligne 4 (hTxtBox.Text = ...)):

if (fldProType.ToLower() == "textbox") 
{ 
    Label hTxtBox = (Label)findControl(fldProName); 
    hTxtBox.Text = fldProValue; 
} 

Toutes les données sont collectées à partir de la base de données correctement, mais l'étiquette devient visqueuse. Des idées?

Répondre

2

Etes-vous sûr que findControl renvoie une valeur?

Est-ce que hTxtBox.Text est une propriété qui effectue des calculs sur un ensemble qui pourrait lancer l'exception NullReferenceException?

0

On dirait que la propriété FieldName de fmProFldDef est visqueuse. Avez-vous vérifié qu'il obtenait l'ID client de hTxtBox?

0

cette ligne retourne null:

Label hTxtBox = (Label)findControl(fldProName); 

Il peut être le résultat de "FieldName" non existant (donc cette ligne de retour null, null utilisé dans la recherche)

string fldProName = (string)fmProFldDef.GetProperty("FieldName"); 

ou le texte dans FieldName ne représentant pas un champ de formulaire.

2

La fonction findControl renvoie une valeur nulle. Il se peut que le Label particulier ne soit pas un enfant direct de la page en cours, c'est-à-dire dans un UpdatePanel ou un autre contrôle de sorte que le nom réel du contrôle soit différent du nom appliqué (et donc ne le trouve pas) . Par exemple, s'il s'appelle "nom", le nom réel peut être ctl0 $ content $ name car il est imbriqué dans un autre contrôle de la page.

Vous ne donnez pas vraiment assez d'informations sur le contexte pour que je puisse vous donner une meilleure réponse.

0

FindControl peut ne pas être en mesure de voir la zone de texte - est-ce dans un contrôle de base de données (par exemple ListView, FormView, etc.)?

Questions connexes