如何在表上应用过滤器后将数据绑定到下拉列表

时间:2018-02-20 05:03:53

标签: c# datatable dropdown

我想将数据表绑定到下拉列表。但在绑定之前我正在应用数据表,以便我只从数据表中获取选定的行。

我正在使用以下代码

DataTable table1 = (DataTable)Session["dtTable"];
       ddlSection.DataSource = table.Select("Section like 'Test'");
        ddlSection.DataTextField = "Quest";
        ddlSection.DataValueField = "ouestID";
        ddlSection.DataBind();

我收到错误消息“System.Data.DataRow'不包含名为'Quest'的属性” 实际上,在将过滤器应用于表之后,列名称将被删除。

我该如何为此编码?

2 个答案:

答案 0 :(得分:0)

问题是过滤方法返回DataRow数组,因此没有DataColumn。我的天真解决方案是from this

foreach (DataRow row in table.Select("Section like 'Test'")) {
    dataTable.ImportRow(row); //then set dataTable as DataSource
}

将DataRow数组转换为DataTable和DataBind。这可能是一个更好的解决方案。

答案 1 :(得分:0)

由于@ rubber423提到了table1.Select将返回datarow数组,它将不会使用datacolumn。您可以使用dataview过滤并绑定到下拉列表,

DataTable table1 = (DataTable)Session["dtTable"];
DataView dataView = table1.DefaultView;
dataView.RowFilter = "Section like 'Test'";
ddlSection.DataSource = dataView;
ddlSection.DataTextField = "Quest";
ddlSection.DataValueField = "ouestID";
ddlSection.DataBind();

希望它有所帮助!