2012-01-05 16 views
0

一部のテーブル名が入力されたドロップダウンリストがあります。選択が変更されると、GridViewは変更を反映する必要があります。動的にSqlDataSourceの選択クエリを作成します。

テーブル名としてパラメータを指定してストアドプロシージャを使用すると、おそらく動作する1つの方法が考えられます。

しかし、これを達成するための他の方法があるのか​​どうかは疑問です。何か案は?ありがとう

答えて

0

:あなたはSelectCommandType =「テキスト」と以下のように使用するコードを設定する必要があります。

この場合は恐ろしいことではありませんが、ワイヤ全体で完全なクエリを送信していますが、これは好ましくありません。さらに、テーブル自体に直接アクセスすることもできますが、SPROCへのアクセスを許可することで、直接アクセスを許可せずにこのリスト機能を特定のユーザーグループに提供することができます。

SQLを構築するのではなく、ストアドプロシージャでCASE文を使用することをお勧めします。これはあなたがテーブルのみをサポートしていることを保証しますあなたはを認識しており、システムの不正使用を禁止しています。

+0

ええ、あなたの意見に同意します。 – woodykiddy

0

代わりの方法として、Sqldatasourceのselectコマンドを動的に設定することができます。私は、ストアドプロシージャのアプローチは、上記の例の両方で構築SQLに好適であることに同意する傾向がある

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch (DropDownList1.SelectedValue.ToString()) 
    { 
     case "TABLE1": 
      SqlDataSource1.SelectCommand = "Select fieldName from TABLE1"; 
      break; 
     case "TABLE2": 
      SqlDataSource1.SelectCommand = "Select fieldName from TABLE2"; 
      break; 
     default:   
      SqlDataSource1.SelectCommand = "Select fieldName from TABLE"; 
      break; 
    } 
} 
関連する問題