1

親子である 3 つのドロップダウンリストがあり、3 番目のドロップダウンリストが選択された後、DetailsView は選択された 3 つのドロップダウンリストすべての結果を表示します。1 番目は ServerName、2 番目は Instance、3 番目は DatabaseName です。サーバー名の最初のドロップダウンリストを選択すると、インスタンス値の新しいリストが 2 番目のドロップダウンリストに表示されます。2番目のドロップダウンリストで何かを選択したとき。「スカラー変数 "@ServerName" を宣言する必要があります」というエラー メッセージが表示されます。意味がわかりません、助けてください。ここにドロップダウンリストのコード、

<ajaxToolkit:ComboBox ID="ComboBox1" runat="server" AutoCompleteMode="SuggestAppend" AutoPostBack="True" DataSourceID="SqlDataSource4" DataTextField="ServerName" DataValueField="ServerName" DropDownStyle="Simple" MaxLength="0" style="display: inline;">
</ajaxToolkit:ComboBox>
<asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [ServerName] FROM [tblServer]">
</asp:SqlDataSource>

<br />
<br />
<asp:Label ID="Label11" runat="server" Text="Select Instance:"></asp:Label>
<br />
<asp:DropDownList ID="DropDownInstance" runat="server" AutoPostBack="True" DataSourceID="Instance" DataTextField="Instance" DataValueField="Instance">
</asp:DropDownList>
<asp:SqlDataSource ID="Instance" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [Instance] FROM [tblDatabase] WHERE [ServerName] = @ServerName">
    <SelectParameters>
        <asp:ControlParameter ControlID="ComboBox1" Name="ServerName" PropertyName="SelectedValue" />
    </SelectParameters>
</asp:SqlDataSource>

<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">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [DatabaseName] FROM [tblDatabase] WHERE [ServerName] = @ServerName AND [Instance] = @Instance">
    <SelectParameters>
        <asp:ControlParameter ControlID="DropDownInstance" Name="Instance" PropertyName="SelectedValue" />
    </SelectParameters>
</asp:SqlDataSource>

次に、これらのドロップダウン リスト関数を SQLDataSource2 に付属の DetailsView に渡し、SQLDataSource2 の SelectCommand で次のように書きました。 SelectCommand="SELECT * FROM [tblDatabase] WHERE (([DatabaseName] = @DatabaseName) AND ([Instance] = @Instance) AND ([ServerName] = @ServerName))"

その後、SelectParameter コードを追加します。

<SelectParameters>
    <asp:ControlParameter ControlID="DropDownDatabase" Name="DatabaseName" PropertyName="SelectedValue" Type="String" />
    <asp:ControlParameter ControlID="DropDownInstance" Name="Instance" PropertyName="SelectedValue" Type="String" />
    <asp:ControlParameter ControlID="ComboBox1" Name="ServerName" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
4

2 に答える 2

1

SqlDataSource3 では、クエリは @ServerName と @Instance の 2 つのパラメーターを取ります。ただし、select パラメーターでは、@Instance のみを定義します。はい、前のデータ ソースで @ServerName を定義しましたが、このデータ ソースでは定義しませんでした。

于 2012-11-30T18:12:13.710 に答える
0

Jayが最近言及したことから修正しましたが、インスタンスとデータベースのドロップダウンリストコードで修正する別の問題もあり、修正すると正常に機能します。

<asp:Label ID="Label11" runat="server" Text="Select Instance:"></asp:Label>
    <br />
    <asp:DropDownList ID="DropDownInstance" runat="server" AutoPostBack="True" DataSourceID="Instance" DataTextField="Instance" DataValueField="Instance">
    </asp:DropDownList>
    <asp:SqlDataSource ID="Instance" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [Instance] FROM [tblDatabase] WHERE [ServerName] = @ServerName">
        <SelectParameters>
            <asp:ControlParameter ControlID="ComboBox1" Name="ServerName" PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>

    <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">
    </asp:DropDownList>
    <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:Database_Shared_NotebookConnectionString %>" SelectCommand="SELECT [DatabaseName] FROM [tblDatabase] WHERE [ServerName] = @ServerName AND [Instance] = @Instance">
        <SelectParameters>
            <asp:ControlParameter ControlID="DropDownInstance" Name="Instance" PropertyName="SelectedValue" />
            <asp:ControlParameter ControlID="ComboBox1" Name="ServerName" PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>
于 2012-11-30T18:23:51.320 に答える