我目前正在开发一个需要动态过滤器选项的项目。这将是一个组合框,用于确定过滤器类型,以及一个文本框,用于获取搜索关键字。我想要做的是让它尽可能地动态。如果客户决定他们想要一个新的源代码,我不想再回到源代码中进行更改。
数据目前分布在两个数据库中,我对此没有发言权。这阻碍了Entity Framework和Dynamic LINQ的使用。我当前的想法是将组合框绑定到存储在数据库中的“过滤器”,使用T-SQL执行以获取结果并使用sp_executesql将其取回,可以看到here。< / p>
我想就如何实现这一目标提出一些其他建议。我觉得应该有一种优雅的方式可以用C#来做,但我想不到它。
答案 0 :(得分: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];
}