我正在尝试将dropdownlist的数据源绑定到datatable,gridview的列显示'has error'&没有数据显示,我想知道我的linq查询有什么问题。
我的数据表中的数据就像这样
'26/12/2012 0:00:00', '1/1/2012 0:00:00', '1/5/2013 0:00:00', '1/7/2013 0:00:00', '4/5/2014 0:00:00
错误表:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)Session["DT"];
var date = from q in dt.AsEnumerable()
where q.Field<DateTime>("Date").Year == int.Parse(DropDownList1.SelectedValue.ToString())
select q;
GridView1.DataSource = date;
GridView1.DataBind();
}
答案 0 :(得分:3)
HasErrors
是DataRow
的属性,我认为您需要将查询具体化,包含您要显示的列。使用CopyToDataTable
从DataTable
创建IEnumerable<DataRow>
或创建匿名类型列表:
DataTable dt = (DataTable)Session["DT"];
var filteredRows = from q in dt.AsEnumerable()
where q.Field<DateTime>("Date").Year == int.Parse(DropDownList1.SelectedValue.ToString())
select q;
GridView1.DataSource = filteredRows.CopyToDataTable();
GridView1.DataBind();