Простая проблема привязки данных

У меня есть страница с общедоступным свойством типа myCustomWebProfile.

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

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

Любая помощь будет оценена.

Вот класс кода программной части 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"/>

person RobD    schedule 24.05.2011    source источник


Ответы (3)


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

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

И это:

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

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

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

Важная часть: «Последнее, что я заметил ... Когда я пробую с‹% #%> + Control.DataBind (), я получаю то, что ожидал. '

person rciq    schedule 24.05.2011
comment
‹SqueakWithChildishLaughter› WooHoo! ‹/SqueakWithChildishLaughter› - person RobD; 24.05.2011

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

FirstName.Text = pgProfile.Current.FirstName;

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

person Arief    schedule 24.05.2011
comment
Спасибо за идею Arief, я обдумал это, но я хочу сохранить привязку данных в коде позади для аккуратности и улучшения ремонтопригодности. Кроме того, я был бы заинтригован, если бы разобрался в корне этой проблемы, а не работал бы с ней - мне просто кажется, что она «должна» работать, я хотел бы знать, почему она не работает. - person RobD; 24.05.2011
comment
привет, РобД, мой ответ показывает вам привязку данных по выделенному коду. а также, если я не ошибаюсь, текстовое поле не поддерживает привязку данных, поэтому ваш код не будет работать, хотя я не знаю о текстовом поле Telerik. - person Arief; 24.05.2011

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

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

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

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

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