2009-04-15 22 views
4

我已經創建了我的第一個asp.net用戶控件,我將在整個應用程序的幾個地方使用它。它包含一個FormView來顯示DataTable中記錄的字段。在asp.net UserControl中的控件上設置數據源?

這一切似乎都很好,除了我無法弄清楚如何在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" /> 
... 

這是一種試圖將數據源的方法:

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 on user control like like:

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

對DataBind()方法做同樣的事情。

+0

完美!謝謝。 – MattSlay 2009-04-15 18:32:32

相關問題