Как использовать источник данных более высокого уровня в пользовательском контроле asp.net? - PullRequest
0 голосов
/ 13 января 2010

Я настраиваю веб-приложение с несколькими формами. Каждая форма определена в asp: FormView с DataSource, установленным в ObjectDataSource. Каждая форма содержит свой собственный набор полей и всегда содержит один или несколько блоков полей, которые одинаковы для нескольких форм.

Поскольку эти блоки одинаковы, я решил определить их в пользовательском контроле пользователя. Вопросы, которые пришли с этим:

  1. Как я могу использовать тот же источник данных для полей ввода в usercontrol как в «выше» жерех: FormView
  2. Можно ли использовать DataBinding.Bind () для полей ввода в пользовательском контроле с тем же источником данных?

Заранее спасибо за ответы.

1 Ответ

1 голос
/ 14 января 2010

После долгих поисков я обнаружил похожую проблему на этом сайте: http://weblogs.asp.net/anasghanem/archive/2009/03/31/sharing-formview-edit-and-insert-templates-and-avoid-duplicate-markup.aspx.

Короче говоря иерархия решений:

<asp:FormView ID="FormView1" runat="server" DefaultMode="Edit" DataSourceID="ObjectDataSource1">
    <uc1:TestControl ID="TestControl1" runat="server" PhoneNumber='<%# Bind("PhoneNumber") %>' />

И код для пользовательского контроля:

[Bindable(true)]
public partial class TestControl : System.Web.UI.UserControl
{
    [Bindable(true), DefaultValue("")]
    public string PhoneNumber
    {
        get
        {
            return this.PhoneTextBox.Text;
        }
        set
        {
            this.PhoneTextBox.Text = value;
        }
    }
}
...