0
 SELECT * FROM [License] WHERE ([LicenseID] = @LicenseID)

これは、リピーター sqldatasource に配置したコードです。テキスト ボックスにライセンス ID 1 と入力すると、リピーターのライセンス ID 1 に関連付けられた値が表示されます。

ページの読み込み時にテーブル License のすべての詳細をリピーターに表示できるように、sqldatasource に if ステートメントを配置するにはどうすればよいですか。テキスト ボックスにライセンス ID を入力した後に検索ボタンを押すと、その特定のライセンス ID に関連する値が表示されます表示されます。

ありがとう編集私はあなたがGurdienと言った方法を試していますが、

  SELECT * FROM License WHERE (0 = @selectAll OR LicenseID=@LicenseID) -> Not working 

   SELECT * FROM License WHERE (0 = @selectAll ) ->working

   SELECT * FROM License WHERE (LicenseID=@LicenseID)-> working

ページロード時にすべてのフィールドを表示し、テキスト ボックスに licenseid を入力すると、その特定の licenceid の詳細を表示したいと考えています。

4

2 に答える 2

0

これには他の方法があると確信していますが、これが私が考えることができる最も近い方法です。

まず、クエリを次のように変更します...

SELECT * FROM License WHERE ([LicenseID] = @LicenseID OR 1 = @selectAll )

次に、ページ内のどこかに、ツールボックスからドラッグして隠しフィールドを作成します。
2 番目のパラメーターのソースを@selectAllその非表示フィールドの値に設定します。param プロパティのデフォルト値を 1 に設定します。
ユーザーが [検索] ボタンをクリックするたびに、隠しフィールドの値を 0 に設定します。または、任意の値に設定します。
パラメータソースを@LicenseIDテキストボックスの値に設定していると思います。

あなたはこの考えを得ていると思います。
デフォルトでは、クエリは次のようになります...

SELECT * FROM License WHERE ([LicenseID] = '' OR 1 = 1 )

したがって、 の値がなくてもLicenseID = ''、条件1 = 1は常に true を返します。したがって、テーブルからすべてのデータを取得します。
ユーザーがテキスト ボックスに入力すると、隠しフィールドの値が、たとえば 0 に変わります。クエリは次のようになります...

SELECT * FROM License WHERE ([LicenseID] = '00112233' OR 1 = 0 )

2 番目の条件は1 = 0false を返しますが、クエリの残りの部分は、入力した LicenseID の値に基づいて適切に機能します。

ユーザーがテキスト ボックスをクリアするか、リセット ボタンをクリックすると、隠しフィールドの値を 1 に戻すことができます。そのため、クエリはすべてのモードを選択するようにリセットされます。

幸運を願っています...!

于 2013-10-17T09:40:47.503 に答える
0

このように使う

 SqlDataSource1.SelectParameters["LicenseID"].DefaultValue="*";

ページの読み込み時に。

そして、あなたがそれを中に書いていることを確認してください!ispostback

SOに関する同様の質問:- sqldatasourceのデフォルト値

于 2013-10-17T09:24:28.240 に答える