0

SQL Server Expressには、、、RecipientsおよびMailingListsRecipientMailingListRecipientIDとMailingListのID)テーブルがあります。各受信者は、いくつかのメーリングリストに割り当てられています。すべての受信者の情報をに表示したいGridView。サーバーエクスプローラーから.aspxソースコードにテーブルをドラッグアンドドロップして、これを実現したかったのです。しかし、私が得たのは、他の表GridViewにあるので、何の情報もありません。MailingLists

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="RecipientID" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
        <Columns>
            <asp:BoundField DataField="RecipientID" HeaderText="Recipient ID" ReadOnly="True" SortExpression="RecipientID" />
            <asp:BoundField DataField="FirstName" HeaderText="First Name" SortExpression="FirstName" />
            <asp:BoundField DataField="LastName" HeaderText="Last Name" SortExpression="LastName" />
            <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
            <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
            <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
            <asp:BoundField DataField="MailingLists" HeaderText="Mailing Lists" SortExpression="MailingLists" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NewsletterConnectionString1 %>" DeleteCommand="DELETE FROM [Recipients] WHERE [RecipientID] = @RecipientID" InsertCommand="INSERT INTO [Recipients] ([FirstName], [LastName], [City], [Email], [Phone]) VALUES (@FirstName, @LastName, @City, @Email, @Phone)" ProviderName="<%$ ConnectionStrings:NewsletterConnectionString1.ProviderName %>" SelectCommand="SELECT [RecipientID], [FirstName], [LastName], [City], [Email], [Phone] FROM [Recipients]" UpdateCommand="UPDATE [Recipients] SET [FirstName] = @FirstName, [LastName] = @LastName, [City] = @City, [Email] = @Email, [Phone] = @Phone WHERE [RecipientID] = @RecipientID">
        <DeleteParameters>
            <asp:Parameter Name="RecipientID" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="FirstName" Type="String" />
            <asp:Parameter Name="LastName" Type="String" />
            <asp:Parameter Name="City" Type="String" />
            <asp:Parameter Name="Email" Type="String" />
            <asp:Parameter Name="Phone" Type="String" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="FirstName" Type="String" />
            <asp:Parameter Name="LastName" Type="String" />
            <asp:Parameter Name="City" Type="String" />
            <asp:Parameter Name="Email" Type="String" />
            <asp:Parameter Name="Phone" Type="String" />
            <asp:Parameter Name="RecipientID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>

GridViewこれらの3つのテーブルからのすべての情報(メーリングリストの名前を含む受信者の詳細)を含む(または可能なListView)を作成するにはどうすればよいですか?

更新:データソースとして使用するようなクエリがあります:

SELECT Recipients.RecipientID, Recipients.FirstName, Recipients.LastName, 
Recipients.City, Recipients.Email, Recipients.Phone, MailingLists.Name
FROM Recipients
INNER JOIN RecipientMailingList
ON Recipients.RecipientID = RecipientMailingList.Recipient_RecipientID
INNER JOIN MailingLists ON RecipientMailingList.MailingList_MailingListID = MailingLists.MailingListID

ただし、私が取得するのは、複数のメーリングリストを持つ同じユーザーの別の行です。私が期待する結果は、コンマ区切りの列を持つユーザーごとに1つの行を持つことですMailingLists

4

1 に答える 1

0

templatefield を使用して関数を呼び出すことができます。

                <ItemTemplate>
             <%#GetName(Convert.ToInt32(Eval("RecipientsID"))) %>
         </ItemTemplate>
         </asp:TemplateField>

ここで、int 値を取得して文字列を返す関数を cs ファイルに記述する必要があります。

于 2013-01-14T17:01:59.923 に答える