2009-04-15 7 views
4

Ich habe mein erstes asp.net UserControl erstellt, das ich an mehreren Stellen in meiner App verwenden werde. Es enthält eine FormView, um Felder des Datensatzes in einer DataTable anzuzeigen.Setzen Sie DataSource auf Steuerelemente in asp.net UserControl?

Es scheint alles in Ordnung, außer, ich kann nicht herausfinden, wie Sie die DataSource auf der FormView innerhalb des UserControl festlegen. Ich möchte die DataSource in einer Methode in Code-behind festlegen.

Ich sehe von Intellisense, dass das UserControl keine DataSource-Eigenschaft, aber es hat eine DataBind-Methode. Ich kann mir vorstellen, dass man verschiedene DataSources auf mehreren Controls innerhalb eines UserControls setzen muss, also muss es eine Methode geben, um in ein UserControl zu bohren, aber ich kann es nicht herausfinden. Hier

ist der aspx-Code:

<%@ Register src="Controls/JobDetail.ascx" tagname="JobDetail" tagprefix="uc1" %> 

... 
<uc1:JobDetail ID="UserControlJobDetail" runat="server" /> 
... 

Hier ist die Methode, die die Datasource zu setzen versucht:

public void BindJobRecord(string SelectedJobNo) 
{ 
    UserControlJobDetail.DataSource = LMDataClass.GetJob(SelectedJobNo); 
    UserControlJobDetail.DataBind(); 
} 

Und hier wird die Usercontrol:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="JobDetail.ascx.cs" Inherits="DwgDatabase.JobDetail" %> 

<asp:FormView ID="fvJobDetail" runat="server" DataKeyNames="job_num"> 
    <ItemTemplate> 
    <div style="float: left; border-width: 1px;" class="LabelStyle TextBoxStyle" > 
    <table> 
     <tr> 
     <td><asp:label runat="server" ID="lblJobNo" Text='Job No' /></td> 
     <td><asp:TextBox runat="server" ID="txtJobNo" Text='<%# Eval("job_num") %>' /></td> 
     </tr> 
     <tr> 
     <td><asp:label runat="server" ID="Label2" Text='Customer' /></td> 
     <td><asp:TextBox runat="server" ID="txtCustNo" Text='<%# Eval("cust_num") %>' /></td> 
     </tr> 
     <tr> 
     <td><asp:label runat="server" ID="Label3" Text='Quote No' /></td> 
     <td><asp:TextBox runat="server" ID="txtQuoteNo" Text='<%# DataBinder.Eval(Container.DataItem, "quote_no", "{0:00000;;.}") %>' /></td> 
     </tr> 
     <tr> 
     <td><asp:label runat="server" ID="Label4" Text='Po No.' /></td> 
     <td><asp:TextBox runat="server" ID="TextBox4" Text='<%# Eval("p_o_num") %>' /></td> 
     </tr> 
    </table>   
    </div> 
</ItemTemplate>    
</asp:FormView> 

Antwort

9

a Erstellen Eigenschaft DataSource auf Benutzersteuerung wie unten:

public object DataSource 
{ 
    get 
    { 
    return this.fvJobDetail.DataSource; 
    } 
    set 
    { 
    this.fvJobDetail.DataSource = value; 
    } 
} 

Machen Sie dasselbe für die DataBind() - Methode.

+0

Perfekt! Vielen Dank. – MattSlay