问题是为什么可观察集合会出现空引用?当我尝试将项目添加到obscollection时发生错误。
注意:我必须知道如何将datagrid中的所有项目都提供给observable collection。
错误:
对象引用未设置为对象的实例。
行: - “good.Add(temp_table);”按一下按钮
Web.DomainService1 oservice = new Web.DomainService1();
public static ObservableCollection<Web.EMP_TABLE> good = new ObservableCollection<Web.EMP_TABLE>();
public Home()
{
InitializeComponent();
this.Title = ApplicationStrings.HomePageTitle;
EntityQuery<Web.EMP_TABLE> q = oservice.GetEMP_TABLE_OBVQuery();
LoadOperation<Web.EMP_TABLE> l = oservice.Load(q);
dataGrid1.ItemsSource = l.Entities;
}
private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
ObservableCollection<Web.EMP_TABLE> good =
dataGrid1.ItemsSource as ObservableCollection<Web.EMP_TABLE>;
Web.EMP_TABLE temp_table = new Web.EMP_TABLE();
temp_table.SALARY = "new_sal";
temp_table.EMP_NAME = "new_name";
temp_table.EMP_NO = "new_num";
good.Add(temp_table);
}
<sdk:DataGrid AutoGenerateColumns="True" Height="116" Name="dataGrid2" Width="539" />
public ObservableCollection<EMP_TABLE> GetEMP_TABLE_OBV()
{
var value = from c in this.ObjectContext.EMP_TABLE
select c;
ObservableCollection<EMP_TABLE> result = new ObservableCollection<EMP_TABLE>(value);
return result;
}
答案 0 :(得分:5)
ObservableCollection<Web.EMP_TABLE> good = dataGrid1.ItemsSource as ObservableCollection<Web.EMP_TABLE>;
当使用“as”而不是(TYPE)进行强制转换时,如果强制转换失败,则不会抛出任何异常。您的变量只是设置为null。 你的演员阵容失败了。
答案 1 :(得分:3)
datagrid1.ItemSource不是一个ObservableCollection,所以你的演员阵容失败了,因此很好。
您必须检查datagrid1.ItemSource实际持有的类型(它是LoadOperation类型上的Entities属性的类型)并强制转换为该类型
答案 2 :(得分:3)
在您编辑和阅读评论后,我看不出,这应该如何运作:
正如其他人所指出的那样,你的演员阵容失败了
你说,你传递一个ObservableCollection,但事实上,你没有这样做,看看这里:
在你的ctor:
dataGrid1.ItemsSource = l.Entities;
l.Entities
很可能是IQueryable
,而不是ObservableCollection
稍后,您正在尝试投射失败的dataGrid1.ItemsSource
。
您向我们展示了GetEMP_TABLE_OBV
的代码,该代码返回ObservableCollection
,但我没有看到该方法的任何用法。