2008-10-02 60 views
1

定義的一個實例中使用:C#,ASP.NET - 的NullReferenceException - 對象引用不設置爲變量的對象

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"); 

線爲有問題的(特別是第4行(hTxtBox.Text = ... )):

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

所有數據從數據庫中正確雲集,但是標籤去扭曲。有任何想法嗎?

回答

2

你確定findControl返回一個值嗎?

hTxtBox.Text是否可以拋出NullReferenceException的集合上執行任何計算的屬性?

0

看起來像fmProFldDef的FieldName屬性是擰緊的。你有沒有確認它獲得了hTxtBox的客戶端ID?

0

這條線返回null:

Label hTxtBox = (Label)findControl(fldProName); 

可能的 「字段名」 不存在(因此返回null,被在查找中使用這條線,然後空)

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

結果或FieldName中的文本不代表表單域。

2

findControl返回空值。這可能是因爲特定的Label不是當前頁面的直接子元素,也就是在UpdatePanel或其他控件內部,因此控件的實際名稱與所應用的名稱不同(因此無法找到它) 。例如,如果它名爲「name」,則實際名稱可能是ctl0 $ content $ name,因爲它嵌套在頁面上的另一個控件中。

你真的沒有給我足夠的信息給我一個更好的答案。

0

FindControl可能無法看到文本框 - 它是否在數據綁定控件中(例如ListView,FormView等)?

相關問題