【问题标题】:Set DataSource on controls within asp.net UserControl?在 asp.net UserControl 中的控件上设置 DataSource?
【发布时间】:2010-10-19 16:06:16
【问题描述】:

我创建了我的第一个 asp.net UserControl,我将在整个应用程序的多个地方使用它。它包含一个 FormView,用于在 DataTable 中显示记录的字段。

看起来一切都很好,除了,我不知道如何在 UserControl 内的 FormView 上设置 DataSource。我想在代码隐藏的方法中设置 DataSource。

我从智能感知中看到 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>

【问题讨论】:

    标签: asp.net user-controls datasource


    【解决方案1】:

    在用户控件上创建一个属性 DataSource,如下所示:

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

    对 DataBind() 方法执行相同操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多