考虑以下结构
class A {}
class B : A {}
class C : A {}
class D : A {}
...
// in data source class
BindingList<B> d1;
BindingList<C> d2;
BindingList<D> d3;
...
// in datagridview class
void BindDataSource(BindingList<A> source);
void QueryDataSource() {
BindingList<A> source = (BindingList<A>)dgv.DataSource;
A a = source.First(...);
}
我希望将d1
和d2
...绑定到DataGridView
到BindDataSource
sot,以便对d1
和{进行任何更改{1}}会自动反映在d2
中。从this post我了解到上述代码无效。但该帖子中没有一个解决方案适用于我的情况。我尝试将DataGridView
更改为以下
BindDataSource
但现在void BindingDataSource<T>(BindingList<T> source) where T:A;
无法编译,因为我无法转换DataSource。有没有办法解决整个事情?
答案 0 :(得分:1)
一些选择。
选项1:让d1 ... d3为function compile() {
const input = document.getElementById("input");
const transpiled = document.getElementById("transpiled");
const output = document.getElementById("output");
transpiled.value = Opal.compile(input.value);
output.value = eval(transpiled.value);
}
document.onload = function() { compile(); }
个实例,但只插入B,C,
D进入他们。
选项2:拥有一个集合,并查询/过滤 需要时B,C和D.
选项3:做这样的事情。
BindingList<A>
选项4:使用通用方法。
BindDataSource(
new BindingList<A>(d1.ToList<A>())
)