C# 当我搜索任何记录时,单击“打印”按钮后,会出现错误,如“请选择行”

C# 当我搜索任何记录时,单击“打印”按钮后,会出现错误,如“请选择行”,c#,wpf,oledb,C#,Wpf,Oledb,在这里,我使用OLEDB Access数据库和rdlc报告开发了WPF应用程序。在这里,我遇到了Datagrid的问题。此应用程序运行完美,但当我搜索任何记录时,它会给我错误,请选择要打印的记录!!!。当我调试这个应用程序时,我知道它。当我搜索任何记录时,时间复选框值自动设置为false。这就是问题所在。所以请建议我该怎么做?我是否可以更改搜索代码,如果我更改了,请向我推荐任何好的方法。提前谢谢。请看我的删除按钮代码,因为当我点击删除,但之后,它创建了这个问题 以下代码用于搜索ChequeNam

在这里,我使用OLEDB Access数据库和rdlc报告开发了WPF应用程序。在这里,我遇到了Datagrid的问题。此应用程序运行完美,但当我搜索任何记录时,它会给我错误,请选择要打印的记录!!!。当我调试这个应用程序时,我知道它。当我搜索任何记录时,时间复选框值自动设置为false。这就是问题所在。所以请建议我该怎么做?我是否可以更改搜索代码,如果我更改了,请向我推荐任何好的方法。提前谢谢。请看我的删除按钮代码,因为当我点击删除,但之后,它创建了这个问题

以下代码用于搜索ChequeName:-

   private void txtChequeName_TextChanged(object sender, TextChangedEventArgs e)
    {           
       System.Windows.Controls.TextBox t = (System.Windows.Controls.TextBox)sender;
        string filter = t.Text.ToUpper();

        ICollectionView cv = CollectionViewSource.GetDefaultView(dgDataArea.ItemsSource);

        if (filter == "")
            cv.Filter = null;
        else
        {
            cv.Filter = o =>
            {
                BankMaster p = o as BankMaster;
                //if (t.Name == "txtFirstName")
                //return (p.FirstName == filter);
                return (p.ChequeName.ToUpper().StartsWith(filter));
            };
        }
    }
以下代码用于打印数据:-

       private void ImgPrint_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        try
        {
            List<BankMaster> bmlist = dgDataArea.ItemsSource as List<BankMaster>;

            if (bmlist != null)
            {
                foreach (var item in bmlist)
                {
                    if (item.CheckAll == false)
                    {
                        MessageBox.Show("Please select the record which you want to print !!!", "Error In Selecting Record", MessageBoxButton.OK, MessageBoxImage.Error);
                        break;
                    }
                    else
                    {
                        ChequePrintReport chreport = new ChequePrintReport();

                        B_SQUARE_System.Core.Utility.GeneralDeclaration.isGridSelectionChange = true;
                        chreport.ChequeInfo__OnSaved += adddata_BankInfo_OnSaved;
                        chreport.isEditMode = true;
                        chreport.currentSelectedItem = bmlist;
                        chreport.ShowDialog();
                        break;
                    }
                }
            }
       }



                   private void Imgdelete_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        try
        {
            List<BankMaster> bmlist = dgDataArea.ItemsSource as List<BankMaster>;
            String msg = "Are you sure you want to delete selected rows ? ";
            int count = 0;

            if (bmlist != null)
            {
                foreach (var item in bmlist)
                {
                    if (item.CheckAll == false)
                    {
                        MessageBox.Show("Please select the record which you want to delete !!!", "Error In Selecting Record", MessageBoxButton.OK, MessageBoxImage.Error);
                        break;
                    }
                    else
                    {
                        if (MessageBox.Show(msg, "Delete Cheque Data", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
                        {
                            foreach (var items in bmlist)
                            {
                                if (items.CheckAll == true)
                                {
                                    bmservices.deleteBankMasterInfo(items.Bank_ID);
                                    count++;
                                }
                            }
                            System.Windows.MessageBox.Show("You deleted " + " " + count + " " + "rows.", "Total Deleted Row", MessageBoxButton.OK, MessageBoxImage.Information);
                            BankMaster_Loaded(sender, e);
                        }
                        break;
                    }
                    break;
                }
            }   

问题在于您的项目。请检查循环中的所有条件。您不应该在这里使用else语句,因为所有的项都没有被检查,所以else代码将针对某些项运行

更改foreach循环内的代码,如下所示:

            bool printed = false;    

            foreach (var item in bmlist)
            {
                if (item.CheckAll)
                {
                //Place the Printing code here
                    printed=true;                        
                }

                if (printed == false)
                {
                   //Place the Error message here
                }
            }            

以类似的方式更改删除代码…

谢谢兄弟。但我在选择复选框方面有问题。单一选择会产生问题。我附上上述问题中的复选框代码。请帮帮我