1

これが私が持っているドロップダウンリストです...

<asp:DropDownList
    ID="selectTimeFrame"
    runat="server"
    AutoPostBack="true"
    DataTextField="Increment"
    DataValueField="Increment"
    DataSourceID="SqlTimeFrame" 
</asp:DropDownList>

そしてそのデータソース:

  <asp:SqlDataSource 
    ID="SqlTimeFrame"
    runat="server"
    ConnectionString="<% connectionstring %>"
    SelectCommand="Select [IncrementID], [Increment] FROM [TimeFrame] ORDER BY [IncrementID]" >
</asp:SqlDataSource>

次に、データソースが次のように見えるグリッドビューがあります。

 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<% connectinstring %>"
    ProviderName="<% connectionstring %>"
    SelectCommand="SELECT * FROM @TimeFrame">

    <SelectParameters>
        <asp:ControlParameter ControlID="selectTimeFrame"
            Name="TimeFrame"
            PropertyName="SelectedValue"
            Type="String" />
    </SelectParameters>

そして明らかに、私が問題を抱えている場所は、「 FROM @TimeFrame 」が私が望むことをしないという事実です。名前が異なる時間枠に対応するさまざまなビューがあり、ユーザーがドロップダウン メニューから選択したオプションに基づいて、グリッドビューを変更してその情報を入力できるようにしたいと考えています。どんな洞察も大歓迎です...ありがとう!! :D

4

1 に答える 1

0

動的SQLを使用して、探しているものを実現できますが、ユーザーから受け取った入力を信頼できないため、SQLインジェクション攻撃を防ぐために、これを非常に徹底的にテストする必要があります。

テーブルがデータベースに存在するかどうかをチェックし、存在する場合は動的SQLステートメントを作成して実行する単純なストアドプロシージャを作成しました。

ストアドプロシージャ:

CREATE PROCEDURE dbo.GetData
@TableName NVARCHAR(200)
AS
BEGIN
IF OBJECT_ID(@TableName , N'U') IS NOT NULL
    BEGIN 
        EXEC('SELECT * FROM ' + @TableName);
    END
END

ASPX:

<asp:DropDownList ID="selectTimeFrame" runat="server" AutoPostBack="true" DataTextField="Increment"
    DataValueField="Increment" DataSourceID="SqlTimeFrame" />
<asp:SqlDataSource ID="SqlTimeFrame" runat="server" ConnectionString="<%$ ConnectionStrings:connectionstring %>"
    SelectCommand="Select [IncrementID], [Increment] FROM [TimeFrame] ORDER BY [IncrementID]">
</asp:SqlDataSource>
<asp:SqlDataSource ID="dynamicDS" runat="server" ConnectionString="<%$ ConnectionStrings:connectionstring %>"
    SelectCommand="GetData" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="selectTimeFrame" Name="TableName" PropertyName="SelectedValue"
            Type="String" />
    </SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="gvData" DataSourceID="dynamicDS" runat="server">
</asp:GridView>
于 2012-12-18T04:25:55.060 に答える