2011-05-24 140 views
1

我有一個頁面,其中有一個myCustomWebProfile類型的公共屬性。簡單數據綁定問題

在後面的代碼中,我有一個文本框,我試圖將文本框綁定到我上面描述的web配置文件的屬性。

無論我使用哪種綁定語法的變體 - 文本框在渲染時都不會填充。

任何幫助將不勝感激。

下面是C#代碼隱藏類:

public partial class Profile : selfSvcPage 
    { 
     public WebProfile pgProfile { get; set; } 

     protected void Page_Init(object sender, EventArgs e) 
     { 
      pgProfile = WebProfile.Current; 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      object o = WebProfile.Current.FirstName; 
      //Successfully populates with a string 

      object b = DataBinder.Eval(pgProfile, "FirstName"); 
      //Successfully populates with a string 
     } 
    } 

下面是代碼標記:

<telerik:RadTextBox ID="FirstName" Text='<%# Eval("pgProfile.FirstName")  %>' SkinID="formText" CssClass="formField" runat="server"/> 

回答

2

一些東西試試這個:

<telerik:RadTextBox ID="FirstName" Text='<%# pgProfile.FirstName %>' SkinID="formText" CssClass="formField" runat="server"/> 

而且這樣的:

protected void Page_PreRenderComplete(object sender, EventArgs e) 
{ 
    DataBind(); 
} 

在您的情況下,您可能希望在早期階段進行綁定。請參閱本作的細節:

Why will <%= %> expressions as property values on a server-controls lead to a compile errors?

最重要的部分:「作爲最後一件事我注意到...當我用<%#%嘗試> + Control.DataBind(),然後我得到了我會期待。 '

+0

WooHoo! RobD 2011-05-24 10:03:38

1

你能不能做到這一點在你的Page_Load:

FirstName.Text = pgProfile.Current.FirstName; 

製作確保你的pgProfile的初始化發生在上面的代碼之前。

+0

感謝Arief的想法,我曾考慮過這個問題,但我希望保持數據綁定的整體性,並提高可維護性。另外,我很想去解決這個問題的根源,而不是解決這個問題 - 它只是在我看來「應該」工作,我希望我知道爲什麼它不工作。 – RobD 2011-05-24 09:43:47

+0

嗨RobD,我的答案顯示你的代碼隱藏數據綁定。如果我沒有弄錯,textbox不支持數據綁定,那就是爲什麼你的代碼不能工作,但我不知道telerik文本框。 – Arief 2011-05-24 09:52:36

0

我從你的代碼有什麼是你有一個

類檔案

在你做出了類webProfile的屬性,該屬性類。

現在,通過使用這個屬性,你要轉讓價值,我認爲你可以嘗試這樣的

Text='<%#(DataBinder.Eval(Container.DataItem, "pgProfile.Current.FirstName")).ToString()%>'