2010-01-13 5 views
0

Je configure une application Web avec plusieurs formulaires. Chaque formulaire est défini dans un ASP: FormView avec l'ensemble DataSource à un objet ObjectDataSource. Chaque formulaire contient son propre ensemble de champs et contient toujours un ou plusieurs blocs de champs, qui sont les mêmes pour plusieurs formulaires. Parce que ces blocs sont les mêmes, j'ai décidé de les définir dans un contrôle personnalisé. Les questions qui ont à ceci:Comment utiliser une source de données de plus haut niveau dans asp.net custom usercontrol?

  1. Comment puis-je utiliser la même source de données pour les champs d'entrée dans le usercontrol comme dans le « supérieur » asp: FormView?
  2. Est-il possible d'utiliser DataBinding.Bind() pour les champs de saisie dans usercontrol, avec cette même source de données?

Merci d'avance pour les réponses.

Répondre

1

Après une longue recherche, j'ai trouvé un problème similaire sur ce site: http://weblogs.asp.net/anasghanem/archive/2009/03/31/sharing-formview-edit-and-insert-templates-and-avoid-duplicate-markup.aspx.

En bref, la hiérarchie de solution:

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

Et le codebehind pour le usercontrol:

[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; 
     } 
    } 
} 
Questions connexes