我想将数据表绑定到下拉列表。但在绑定之前我正在应用数据表,以便我只从数据表中获取选定的行。
我正在使用以下代码
DataTable table1 = (DataTable)Session["dtTable"];
ddlSection.DataSource = table.Select("Section like 'Test'");
ddlSection.DataTextField = "Quest";
ddlSection.DataValueField = "ouestID";
ddlSection.DataBind();
我收到错误消息“System.Data.DataRow'不包含名为'Quest'的属性” 实际上,在将过滤器应用于表之后,列名称将被删除。
我该如何为此编码?
答案 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();
希望它有所帮助!