Простая задача привязки данных - PullRequest
1 голос
/ 24 мая 2011

У меня есть страница с открытым свойством типа myCustomWebProfile.

В коде позади у меня есть текстовое поле, и я пытаюсь привязать текстовое поле к свойству моего веб-профиля, описанному выше.

Независимо от того, какие варианты синтаксиса привязки я использую - текстовое поле никогда не заполняется при визуализации.

Любая помощь будет принята с благодарностью.

Вот C #класс code-behind:

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 ]

2 голосов
/ 24 мая 2011

Попробуйте это:

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

И это:

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

В вашей ситуации вы можете связать на более ранней стадии.За подробностями обращайтесь к этому:

Почему выражения <% =%> в качестве значений свойств серверных элементов управления приводят к ошибкам компиляции?

Важная часть:«Как последнее, что я заметил ... Когда я пытаюсь использовать <% #%> + Control.DataBind (), я получаю то, что ожидал.«

1 голос
/ 24 мая 2011

Можете ли вы просто сделать это в вашей Page_Load:

FirstName.Text = pgProfile.Current.FirstName;

Убедитесь, что инициализация вашего pgProfile происходит до кода выше.

0 голосов
/ 24 мая 2011

То, что я получил из вашего кода, у вас есть

Профиль класса

в этом классе вы создали свойство класса webProfile.

Теперь, используя это свойство, вы пытаетесь присвоить значение, я думаю, вы можете попробовать что-то вроде этого

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