0

SQL Server からのデータのリストを表示する親子コントロールである 2 つのドロップダウン リストを使用します。2番目のドロップダウンリストを選択したときにそれを実現したかったのですが、DetailsView には選択した結果が表示されます。データベース名が Database3 であることを選択した場合、DetailsView に database3 からのすべての結果を表示します。いくつかのコーディングを試みましたが、詳細ビューには何も表示されません。助けてください!ここに私のドロップダウンリストコード、

<asp:DropDownList ID="DropDownServerName" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="ServerName" DataValueField="ServerName">
    </asp:DropDownList>
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [ServerName] FROM [tblServer]"></asp:SqlDataSource>
    <br />
    <br />
    <br />
    <asp:Label ID="Label10" runat="server" Text="Select Database:"></asp:Label>
    <br />
    <asp:DropDownList ID="DropDownDatabase" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource3" DataTextField="DatabaseName" DataValueField="DatabaseName" OnSelectedIndexChanged="DropDownDatabase_SelectedIndexChanged">
    </asp:DropDownList>
    <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [DatabaseName] FROM [tblDatabase] WHERE [ServerName] = @ServerName">
        <SelectParameters>
            <asp:ControlParameter ControlID="DropDownServerName" Name="ServerName" PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>

次に、DetailsView では、すべてを調べなければならないので、あまり多くのコードを入れたくありませんが、DetailsView には Update、Delete、および Insert Function がありました。DataSourceID は SQLDataSource1 に付属しており、これはテーブル Database から BoundField されます。SQLDataSource1 の SelectCommand で、次のように入力します。

SelectCommand="SELECT * FROM [tblDatabase] WHERE [DatabaseName] = @DatabaseName"

次に、選択したドロップダウン リストから SQLDataSource1 に SelectParameter を追加します。

<SelectParameters>
            <asp:ControlParameter ControlID="DropDownDatabase" Name="DatabaseName" PropertyName="SelectedValue" />
        </SelectParameters
4

1 に答える 1

0

同じ要件を使用して作成したページのコードを次に示します。2 つのドロップダウン リストがありました。1 つは顧客の名前用で、もう 1 つは顧客が購入した製品用です。詳細ビューには、2 番目のドロップ ドロップ リストで選択された製品の完全な詳細が表示されます。

これがあなたが目指していたものだと思います。2 番目のドロップダウン リストと詳細ビューのデータソースを設定するときは、ウィザードを使用して where 句を作成し、両方がドロップダウン リスト コントロールから主キーを取得するようにする必要があることに注意してください。

たとえば、sqldatasource1 (コードの下部を参照) では、ControlID が "ddlProducts" に設定され、PropertyName が "SelectedValue" に設定されています。sqlDataSource1 を使用する detailsview は、Products ドロップダウンリストの選択された値を使用して select ステートメントを実行します。うまくいけば、これが役に立ちます。

<table class="style4">
        <tr>
            <td>
                Customer:</td>
            <td>
        <asp:DropDownList ID="ddlCustomers" runat="server" 
            DataSourceID="ObjectDataSource1" AutoPostBack="True" DataTextField="Name" 
            DataValueField="CustomerID" AppendDataBoundItems="True" 
            onselectedindexchanged="ddlCustomers_SelectedIndexChanged">
             <asp:ListItem Text="--Select a customer--" Value="0"></asp:ListItem>
        </asp:DropDownList>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="CustomerDB" SelectMethod="GetCustomerList">
        </asp:ObjectDataSource>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                    ControlToValidate="ddlCustomers" ErrorMessage="Please select a Customer" 
                    InitialValue="0"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td>
                Product</td>
            <td>
        <asp:DropDownList ID="ddlProducts" runat="server" AutoPostBack="True" 
            DataSourceID="ObjectDataSource2" DataTextField="Name" 
            DataValueField="ProductCode" AppendDataBoundItems="True" 
                    onselectedindexchanged="ddlProducts_SelectedIndexChanged">
            <asp:ListItem Text="--Select a product--" Value="0"></asp:ListItem>
        </asp:DropDownList>
        <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" 
            SelectMethod="GetCustomerProducts" TypeName="ProductDB" 
            OldValuesParameterFormatString="original_{0}">
            <SelectParameters>
                <asp:ControlParameter ControlID="ddlCustomers" Name="CustomerID" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                    ControlToValidate="ddlProducts" ErrorMessage="Please select a product" 
                    InitialValue="0"></asp:RequiredFieldValidator>
            </td>
        </tr>

    </table>


    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
        DataKeyNames="ProductCode" DataSourceID="SqlDataSource1" Height="50px" 
        Width="125px">
        <Fields>
            <asp:BoundField DataField="ProductCode" HeaderText="ProductCode" 
                ReadOnly="True" SortExpression="ProductCode" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Version" HeaderText="Version" 
                SortExpression="Version" />
            <asp:BoundField DataField="ReleaseDate" HeaderText="ReleaseDate" 
                SortExpression="ReleaseDate" />
        </Fields>
    </asp:DetailsView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:TechSupport_DataConnectionString %>" 
        SelectCommand="SELECT [ProductCode], [Name], [Version], [ReleaseDate] FROM [Products] WHERE ([ProductCode] = @ProductCode)">
        <SelectParameters>
            <asp:ControlParameter ControlID="ddlProducts" Name="ProductCode" 
                PropertyName="SelectedValue" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>
于 2013-02-12T23:19:49.587 に答える