1

私はasp.netに取り組んでいます。selectcommandSqlDataSourceにハードコードされたクエリがあります:

<asp:SqlDataSource ID="DataSource1" runat="server" CancelSelectOnNullParameter="False"
    ConnectionString="<%$ ConnectionStrings:S.Properties.Settings.ConnectionString %>" 
    SelectCommand="SELECT * FROM [table]
    WHERE ([col1] like Case @col1_param When null Then col1 Else @col1_param End)
    and  ([col2] like Case @col2_param When null Then col2 Else @col2_param End)"
    SelectCommandType="Text">
    <SelectParameters>
        <asp:ControlParameter ControlID="TextBox1" Name="col1_param" PropertyName="Text"
            Type="String" />
        <asp:ControlParameter ControlID="TextBox2" Name="col2_param" PropertyName="Text"
            Type="String" />
    </SelectParameters>

私が望むのは、1 つのテキスト ボックスにのみデータを入力すると、データはそのテキスト ボックスの値に従って where 句のみに表示されるということです。また、どちらのテキストボックスにも値が配置されていない場合、クエリは場所がないかのように実行されます。

現在、このコードでは、1 つのテキスト ボックスにデータが表示されない場合に何が起こるかがわかりません。すべてのテキスト ボックスが空の場合も同様です。

SQLストアドプロシージャを使用したくありません。

どうすればこれを解決できますか?

ありがとう...

4

2 に答える 2

0

オプションで列を検索するクエリが必要なようです。

フォーマットを使用できます

WHERE @col1_param IS NULL OR [col1] LIKE '%@col1_param%'

パラメータが指定されていない場合のプロパティ処理を行います。

完全な回答については、問題に関する私の質問を参照してください。確かにストアド プロシージャとして実行されましたが、概念は SQLDataSource についても同じです。

于 2013-04-09T04:24:26.183 に答える