用于提供动态筛选器的选项

本文关键字:选项 筛选 动态 用于 | 更新日期: 2023-09-27 18:26:50

我目前正在处理一个需要动态过滤器选项的项目。这将是一个用于确定过滤器类型的组合框,以及一个用于获取搜索关键字的文本框。我想做的是让它尽可能充满活力。如果客户决定要一个新的,我不想再回到源代码中进行更改。

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

我想就如何做到这一点提出一些其他建议。我觉得应该有一种优雅的方法可以在C#中进行思考,但我想不出来。

用于提供动态筛选器的选项

如果你正在使用DropDownList(此处命名为yourDdl),并且你想用来自数据库的数据填充它,我建议你这样做:

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];

}