创建WPFon showdialog事件

时间:2011-06-22 12:05:15

标签: c# wpf entity-framework-4 wpfdatagrid

我正在使用

创建一个新的窗口弹出窗口
PopupWindows.PaymentsSummary paymentsSummary = new PopupWindows.PaymentsSummary  
paymentsSummary.ParentWindow = Window.GetWindow(this);
paymentsSummary.ShowDialog();

我的付款摘要窗口中的加载功能

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        basepage.payments.BindPaymentSummaryToDataGrid(uiActiveItems, basepage.user.terminal.TerminalId, true);
        basepage.payments.BindPaymentSummaryToDataGrid(uiInActiveItems, basepage.user.terminal.TerminalId, false);
    }

功能是

    public void BindPaymentSummaryToDataGrid(DataGrid dgrid, int terminalId, bool isActivePayment)
    {
        BLPinNumber pins = new BLPinNumber();
        string pinNumber = String.Empty;
        long pinId = pins.getPinId(terminalId, ref pinNumber);
        using (var dbEntities = new DatabaseAccess.Schema.Entities())
        {
              dgrid.DataContext = dbEntities.getPaymentRecordsByPinId((int)pinId, isActivePayment);
        }
    }

上面的代码在SQL Server中调用Stored Proc并返回一个对象

然而,当应用程序运行时,我在单击以显示以下行的弹出窗口时收到错误paymentsSummary.ShowDialog();

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

我已经将其用于数据网格的XAML中的以下代码

DataGrid  ItemsSource="{Binding}" Grid.Column="{Binding}"

如果我删除此代码,它可以工作,但数据不会显着加载。

所以我认为我需要做的是绑定datagrid onShowDialog方法。

我如何创建这个?

或者使用Entity框架是否有更好的方法,我习惯使用ASP.NET,如果使用DATAGRIDS看起来更容易,那就更容易了。

非常感谢

1 个答案:

答案 0 :(得分:1)

你的问题是延迟加载!,你有两个选择:

  1. 以急切加载方式选择数据(更改getPaymentRecordsByPinId)。
  2. 弹出窗口打开时不要丢弃dbEntities。