如何将SqlDataSource绑定到UserControl中的DetailView ?

本文关键字:UserControl 中的 DetailView 绑定 SqlDataSource | 更新日期: 2023-09-27 18:02:20

我创建了一个用户控件,其中包含一个详细信息视图,我计划将其用作模板来开发许多其他页面。例如,我想在我拥有的另一个.aspx页面上使用此控件。这个aspx页面将使用SqlDataSource来进行数据绑定。我对这些东西很陌生,所以我的理解是有限的,所以对我有耐心(谢谢)。

这是用户控件的基础:

<asp:DetailsView ID="DV1" runat="server" AutoGenerateRows="False" 
DataKeyNames="ID" DataSourceID="SqlDataSource1" Height="16px" Width="100%" 
Font-Size="14pt" FooterText=" " ForeColor="#333333" GridLines="None" 
HeaderText=" ">

在后面的代码中,我使这个ID可以访问:

public DetailsView DetailView
    {
        get { return DV1; }
        set { DV1 = value; }
    }

在我的aspx页面我有:

<%@ Register Src="StdDetails_View.ascx" TagName="UserList" TagPrefix="uc" %>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ucsConnectionString %>" 
    SelectCommand="usp_UserInfo_GetBy_ID" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:Parameter DefaultValue="5afadb8a-3127-4a67-85dd-bde4de6d03c4" Name="ID" 
            Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

我能得到这个工作的唯一方法是如果我在userControl中添加BoundFields到我使用的特定存储过程。除了这个,我不知道该怎么办!如何使用这个detailview绑定这个数据源?

感谢你的帮助!

如何将SqlDataSource绑定到UserControl中的DetailView ?

尝试设置AutoGenerateRows = true

<asp:DetailsView ID="DV1" runat="server" AutoGenerateRows="true" 
DataKeyNames="ID" DataSourceID="SqlDataSource1" Height="16px" Width="100%" 
Font-Size="14pt" FooterText=" " ForeColor="#333333" GridLines="None" 
HeaderText=" ">

DataSourceID将只在相同的上下文中工作(即usercontrol)。你需要在你的web表单的代码后面做这样的事情:

UserList.DetailView.DataSource = SqlDataSource1