1

現在、動的フィルター オプションを必要とするプロジェクトに取り組んでいます。これは、フィルタ タイプを決定するために使用されるコンボボックスと、検索キーを取得するために使用されるテキスト ボックスです。私がやりたいことは、これを可能な限り動的にすることです。顧客がその場で新しいコードが必要だと判断した場合に、ソース コードに戻って変更する必要はありません。

現在、データは 2 つのデータベースに分散されていますが、これについては何も言えません。これにより、Entity Framework と Dynamic LINQ の使用が推奨されなくなりました。私が持っている現在のアイデアは、コンボボックスをデータベースに格納されている「フィルター」にバインドし、T-SQL を実行して結果を取得し、sp_executesql を使用して結果を取得することです

これを達成する方法について、他の推奨事項があれば教えてください。C#でできるエレガントな方法があるはずだと思いますが、思いつきません。

4

1 に答える 1

0

DropDownList (ここでは yourDdl という名前) を使用していて、DB からのデータを入力したい場合は、次のようにすることをお勧めします。

yourDdl.DataSource = getListSelection("AtecoYear = 2004", true);
yourDdl.DataTextField = "ComboText";
yourDdl.DataValueField = "ComboID";
yourDdl.DataBind();

メソッド getListSelection (適切なクラスに配置するのが最善の方法です) は、DB に接続し、データを抽出して DataTable に配置します。

public DataTable getListSelection(string filter_status)
{
    DataTable dt;
    string cmdText = "select ExampleID as ComboID, ExampleName as ComboText from ExampleTable";

    SqlConnection objIdbConnection = new SqlConnection(yourConnectionString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = cmdText;
    cmd.Connection = objIdbConnection;
    cmd.CommandTimeout = 30; // seconds
    cmd.Connection.Open();

    IDataAdapter da = new SqlDataAdapter((SqlCommand)cmd);
    DataSet myDataTable = new DataSet();
    da.Fill(myDataTable);
    objIdbConnection.Close();

return myDataTable.Tables[0];

}

于 2013-08-08T16:08:43.157 に答える