我无法获得当前行值。我该怎么办?
bindingSource1.DataSource = LData; (LData is Generic List)
public DataRow currentRow
{
get
{
int position = this.BindingContext[bindingSource1].Position;
if (position > -1)
{
return ((DataRowView)bindingSource1.Current).Row;
}
else
{
return null;
}
}
}
我无法获得当前行:
MessageBox.Show(currentRow["NAME"].ToString());
获取Err:InvalidCastException,我该怎么办? 感谢。
答案 0 :(得分:3)
如果您将DataRow
设置为bindingSource1.Current
而不是DataSource
,则List<T>
中的DataTable
个对象可能无法获得}。在您的情况下,bindingSource1.Current
将包含泛型类型的实例。
我想你是这样初始化LData:
LData = new List<T>();
该属性应如下所示:
public T currentRow
{
get
{
int position = this.BindingContext[bindingSource1].Position;
if (position > -1)
{
return (T)bindingSource1.Current;
}
else
{
return null;
}
}
}
你可以读取这样的值(假设Name
是T
的属性):
MessageBox.Show(currentRow.Name);
当然没有经过测试,但这样的事情应该有效。使用以下行中的调试器来查看Current
属性的内容实际上是什么:
return (T)bindingSource1.Current;