2009-04-15 8 views
4

私は最初のasp.net UserControlを作成しました。これは私のアプリ全体でいくつかの場所で使用します。 DataTableにレコードのフィールドを表示するためのFormViewが含まれています。asp.net UserControl内のコントロールにDataSourceを設定しますか?

UserControl内にあるFormViewにDataSourceを設定する方法がわかりません。私はコードビハインドのメソッドでDataSourceを設定したい。

私はIntellisenseから、UserControlにはDataSourceプロパティがないが、DataBindメソッドがあることがわかります。私はUserControl内の複数のコントロールに異なるDataSourceを設定する必要があるかもしれないので、UserControlにドリルするためのいくつかのメソッドが必要ですが、私はそれを把握することはできませんが想像することができます。ここで

は、ASPXコードである:ここで

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

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

は、DataSourceを設定しようとする方法である:

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

そして、ここでは、ユーザーコントロールです:

<%@ 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> 

答えて

9

の作成します以下のようにユーザーコントロールのプロパティDataSource:

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

DataBind()メソッドでも同じ操作を行います。

+0

パーフェクト!ありがとう。 – MattSlay

関連する問題