1

我目前正在开发一个需要动态过滤器选项的项目。这将是一个组合框,用于确定过滤器类型,以及一个文本框,用于获取搜索键。我想要做的是让它尽可能动态。如果客户决定他们想要一个新的,我不想回到源代码并更改它。

数据目前分布在两个数据库中,我对此没有发言权。这不鼓励使用实体框架和动态 LINQ。我目前的想法是将组合框绑定到存储在数据库中的“过滤器”,并使用 T-SQL 执行以获取结果并使用 sp_executesql 将它们取回,可以在这里看到。

我想要一些关于如何实现这一点的其他建议。我觉得应该有一种优雅的方式认为可以在 C# 中完成,但我想不出。

4

1 回答 1

0

如果您使用的是 DropDownList(此处命名为 yourDdl)并且您想用来自数据库的数据填充它,我建议您执行以下操作:

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

getListSelection 方法(最好的方法是将它放在适当的类中)连接到您的数据库,提取数据并将其放入 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 回答