2009-11-25 78 views
4

我有一個聲明的web表單上的用戶控制,如下所示:用戶控制沒有得到聲明屬性值

<nnm:DeptDateFilter ID="deptDateFilter" runat="server" AllowAllDepartments="True" /> 

在代碼隱藏該控制,AllowAllDepartments聲明如下:

internal bool AllowAllDepartments { get; set; } 

然而,當我查看該頁面,並設置該控件的Page_Load事件處理程序設置斷點,我AllowAllDepartments屬性始終爲false。這有什麼可能的原因?

BREAKING NEWS:當我在控件的Page_Load中打斷我的斷點時,即使以編程方式設置屬性對屬性值也沒有影響。這裏是主機頁面的Page_Load:

 deptDateFilter.FilterChanged += deptDateFilter_FilterChanged; 
     if (!IsPostBack) 
     { 
      deptDateFilter.AllowAllDepartments = true; 
      PresentReport(); 
     } 

強大的文本

+0

你有沒有想過這一個? – 2010-08-03 19:16:44

回答

2

嘗試添加屬性值的ViewState的:

protected bool AllowAllDepartments 
{ 
    get 
    { 
     if (ViewState["AllowAllDepartments"] != null) 
     return bool.Parse(ViewState["AllowAllDepartments"]); 
     else 
     return false; 
    } 
    set 
    { 
     ViewState["AllowAllDepartments"] = value; 
    } 
} 

編輯 此外,您可能想要處理該控件的PreRender事件,以查看該控件的屬性是否已正確設置。

+0

這可能會起作用,我會盡量作爲最後的手段,但我不應該明確地將控件屬性添加到視圖狀態。我甚至不需要它在viewstate中,因爲它只對首頁加載有影響。 – ProfK 2009-11-25 15:10:20

+0

作爲最後的手段爲我工作。仍然不知道爲什麼它不會工作,否則... – 2010-08-03 20:17:36

0

使屬性可綁定,如:

[Bindable(true), Category("Appearance"), DefaultValue(false)] 
internal bool AllowAllDepartments { get; set; } 
0

只是出於好奇......如果你不使用get; set;捷徑?

private bool _allowAllDepartments; 
public bool AllowAllDepartments 
{ 
    get { return _allowAllDepartments; } 
    set { _allowAllDepartments = value;} 
} 
0

您是否試過將該屬性公開?