我尝试过以下代码,但datagridview中没有显示任何内容。
任何建议?
string strFilterOption = "dtcolnPurchaseProductExpProductNo=270";
dgvProductExp.DataSource = dtPurchaseProductExp.Select(strFilterOption);
答案 0 :(得分:2)
来自MSDN
DataGridView类支持标准Windows窗体 数据绑定模型。这意味着数据源可以是任何类型的数据源 实现以下接口之一:
IList接口,包括一维数组。
IListSource接口,例如 DataTable和DataSet类。
IBindingList接口,例如 BindingList类。
IBindingListView接口,如 BindingSource类。
由于数据绑定与数组的默认行为,您无法为DataSource属性设置Datatable.Data方法将返回的Datarows数组。来自this post:
主要的一个是对象实现IList或者是 一维数组。问题是,数组具有默认行为 用于数据绑定 - 反射。数组中的对象类型是 反映发现其未编入索引的公共财产 具有可以在网格中表示的值类型。这些 然后,在数据绑定发生时,将属性用作字段。 由于数组中的数据类型是DataRow,因此有六个公共数据类型 properties:HasErrors,Item,ItemArray,RowError,RowState和 表。但Item是一个索引属性,ItemArray是类型 Object(),它不能在gridview中显示,所以这两个 属性被忽略,其他四个属性显示在网格中。
另一种方法是创建一个新的DataTable,使用Clone方法从DataTable源获取模式,并使用DataRows数组填充新的DataTable。
string strFilterOption = "dtcolnPurchaseProductExpProductNo=270";
DataTable cloneTable;
cloneTable = dtPurchaseProductExp.Clone();
foreach (DataRow row in dtPurchaseProductExp.Select(strFilterOption))
{
cloneTable.ImportRow(row);
}
dgvProductExp.DataSource = cloneTable;
或者,您也可以通过BindingSource对象进行绑定并使用其Filter属性。
答案 1 :(得分:0)
您是否测试过dgvProductExp.DataSource.Tables(0).Rows.Count
? ..如果显示0
那就是原因..
或者你确定它不是
string strFilterOption = "dtcolnPurchaseProductExpProductNo='270'";
?
答案 2 :(得分:0)
如果有人遇到类似问题,最简单的方法是将数据行数组转换回datatable,然后设置网格视图数据源。
dgvProductExp.DataSource = dtPurchaseProductExp.Select(strFilterOption).CopyToDataTable();