我试过了下面的代码,但datagridview中没有显示任何内容。将一组数据行绑定到datagridview
有什么建议吗?
string strFilterOption = "dtcolnPurchaseProductExpProductNo=270";
dgvProductExp.DataSource = dtPurchaseProductExp.Select(strFilterOption);
我试过了下面的代码,但datagridview中没有显示任何内容。将一组数据行绑定到datagridview
有什么建议吗?
string strFilterOption = "dtcolnPurchaseProductExpProductNo=270";
dgvProductExp.DataSource = dtPurchaseProductExp.Select(strFilterOption);
从MSDN
DataGridView的类支持标准的Windows窗体 数据绑定模型。这意味着数据源可以是 实现以下接口之一的任何类型:
IList接口,包括一维数组。
IListSource接口,如 的DataTable和DataSet类。
IBindingList接口,如 的BindingList类。
IBindingListView接口,如 BindingSource类。
由于数组绑定的默认行为,因此无法为DataSource属性设置Datatable.Select方法将返回的Datarows数组。从this post:
主要之一是,该对象实现IList或者是 1维数组。事情是,数组绑定的默认行为为 - Reflection。数组中的对象类型是 ,反映它可以发现其未编入索引的公共属性,而 具有可以在网格中表示的值类型。这些 属性然后在数据绑定发生时用作字段。 由于数组中的数据类型是DataRow,因此有六个公共的 属性:HasErrors,Item,ItemArray,RowError,RowState和 表。但Item是一个索引属性,ItemArray的类型为 Object(),它不能在gridview中显示,因此这两个 属性将被忽略,其他四个将显示在网格中。
因此,另一种方法将创建一个新的DataTable,使用Clone方法从DataTable源获取模式,并使用DataRow数组填充新的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属性。
您是否测试过dgvProductExp.DataSource.Tables(0).Rows.Count
? ..如果它表明0
这就是为什么..
或者你确定这不是
string strFilterOption = "dtcolnPurchaseProductExpProductNo='270'";
?
不是一个非常完整的描述。但你有没有试过'dgvProductExp.Databind()'?如果是这样,请发布代码和问题的完整说明。 – saamorim