简单的数据绑定问题

时间:2011-05-24 09:24:22

标签: asp.net data-binding eval declarative

我有一个页面,其公共属性类型为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"/>

3 个答案:

答案 0 :(得分: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?

重要的部分:'我注意到的最后一件事......当我尝试使用&lt;%#%&gt; + Control.DataBind(),然后我得到我所期望的。 “

答案 1 :(得分:1)

您可以在Page_Load中执行此操作:

FirstName.Text = pgProfile.Current.FirstName;

确保pgProfile的初始化发生在上面的代码之前。

答案 2 :(得分:0)

我从你的代码中得到的是你有一个

班级简介

在该类中,您创建了类webProfile的属性。

现在通过使用此属性,您尝试分配值我认为您可以尝试这样的事情

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