Как DataBind SqlDataSource к DetailView в UserControl? - PullRequest
1 голос
/ 14 июля 2011

У меня есть созданный пользовательский элемент управления, содержащий представление сведений, которое я планирую использовать в качестве шаблона для разработки многих других страниц.Например, я хочу использовать этот элемент управления на другой моей странице .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=" ">

В обратном коде я сделал этот идентификатор доступным:

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

На моей странице aspx Ihave:

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

Единственный способ заставить это работать, это добавить BoundFields в userControl к определенной хранимой процедуре, которую я использую.За пределами этого я не знаю, что делать!Как мне связать этот источник данных, используя этот подробный вид?

Благодарим Вас за помощь!

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Попробуйте установить 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=" ">
1 голос
/ 14 июля 2011

DataSourceID будет работать только в том же контексте (т. Е. Контроль пользователя).Вам нужно будет сделать что-то подобное в коде вашей веб-формы:

UserList.DetailView.DataSource = SqlDataSource1

...