Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#LINQ错误,can';我想不出问题出在哪里_C#_Linq_Data Binding_Datagridview_Dialog - Fatal编程技术网

C#LINQ错误,can';我想不出问题出在哪里

C#LINQ错误,can';我想不出问题出在哪里,c#,linq,data-binding,datagridview,dialog,C#,Linq,Data Binding,Datagridview,Dialog,我的程序显示列表的内容。菜单条中的不同项允许用户在单击该项时查看datagridview中的相应数据。但是对于一个特定的列表,我可以选择过滤结果。单击此项时,将弹出一个对话框,允许用户筛选其结果。这可以工作,然后您可以继续查看其他列表,然后单击筛选项目以尝试新的搜索。但是,当您首先使用或不使用筛选器进行筛选搜索,然后不转到其他列表,而是使用或不使用筛选器进行另一个筛选搜索时,就会出现我遇到的问题。该错误实际上发生在对话框第二次出现时,而不是单击接受该对话框的按钮时 我收到的错误如下所示: pri

我的程序显示列表的内容。菜单条中的不同项允许用户在单击该项时查看datagridview中的相应数据。但是对于一个特定的列表,我可以选择过滤结果。单击此项时,将弹出一个对话框,允许用户筛选其结果。这可以工作,然后您可以继续查看其他列表,然后单击筛选项目以尝试新的搜索。但是,当您首先使用或不使用筛选器进行筛选搜索,然后不转到其他列表,而是使用或不使用筛选器进行另一个筛选搜索时,就会出现我遇到的问题。该错误实际上发生在对话框第二次出现时,而不是单击接受该对话框的按钮时

我收到的错误如下所示:

private void mnusViewParagraphHistory_Click(object sender, EventArgs e)
    {
        ViewHistoryFilter histFilter = new ViewHistoryFilter();
        int idFilt;
        string fundIDFilt = "";
        string changedBFilt = "";

        parHRes.Clear();
        if (parH.Count != 0)
        {
            if (histFilter.ShowDialog(this) == DialogResult.OK)
            {
                var parahistQuery = from his in parH
                                    select his;

                if (histFilter.txtID.Text.Trim() != "")
                {
                    idFilt = Convert.ToInt32(histFilter.txtID.Text.Trim());
                    parahistQuery = parahistQuery.Where(h => h.ID == idFilt);
                }

                if (histFilter.txtFundID.Text.Trim() != "")
                {
                    fundIDFilt = histFilter.txtFundID.Text.Trim();
                    parahistQuery = parahistQuery.Where(h => h.FundID.Contains(fundIDFilt.Trim()));
                }

                if (histFilter.txtChangedBy.Text.Trim() != "")
                {
                    changedBFilt = histFilter.txtChangedBy.Text.Trim();
                    parahistQuery = parahistQuery.Where(h => h.ChangedBy.Contains(changedBFilt.Trim()));
                }

                parHRes.AddRange(parahistQuery);
            }

            if (dataGridView1.DataSource != parHRes)
            {
                dataGridView1.DataSource = parHRes;
            }
        }
    }
“DataGridView中发生以下异常: System.IndexOutOfRangeException:索引0在System.Windows.Forms.CurrencyManager.ge_项(Int32索引)的System.Windows.Forms.DatagridView.DataGridViewDataConnection.GetError(Int32 rowIndex)中没有值 要替换此默认对话框,请处理DataError事件。“

在错误中,有一个部分会根据选定的单元格所在的行进行更改。“索引0”将更改为“索引3”或基于行的任何内容

本部分代码如下所示:

private void mnusViewParagraphHistory_Click(object sender, EventArgs e)
    {
        ViewHistoryFilter histFilter = new ViewHistoryFilter();
        int idFilt;
        string fundIDFilt = "";
        string changedBFilt = "";

        parHRes.Clear();
        if (parH.Count != 0)
        {
            if (histFilter.ShowDialog(this) == DialogResult.OK)
            {
                var parahistQuery = from his in parH
                                    select his;

                if (histFilter.txtID.Text.Trim() != "")
                {
                    idFilt = Convert.ToInt32(histFilter.txtID.Text.Trim());
                    parahistQuery = parahistQuery.Where(h => h.ID == idFilt);
                }

                if (histFilter.txtFundID.Text.Trim() != "")
                {
                    fundIDFilt = histFilter.txtFundID.Text.Trim();
                    parahistQuery = parahistQuery.Where(h => h.FundID.Contains(fundIDFilt.Trim()));
                }

                if (histFilter.txtChangedBy.Text.Trim() != "")
                {
                    changedBFilt = histFilter.txtChangedBy.Text.Trim();
                    parahistQuery = parahistQuery.Where(h => h.ChangedBy.Contains(changedBFilt.Trim()));
                }

                parHRes.AddRange(parahistQuery);
            }

            if (dataGridView1.DataSource != parHRes)
            {
                dataGridView1.DataSource = parHRes;
            }
        }
    }
如果我对其他项目执行了相同的操作,则不会复制错误。但是,其他项目仅更改数据源,因为我不需要过滤,如下所示:

private void mnusViewParagraph_Click(object sender, EventArgs e)
    {
        if (dataGridView1.DataSource != parG)
        {
            dataGridView1.DataSource = parG;
        }
    }
我不知道我是否只是对真正的错误视而不见,或者在看了这么长时间之后没有,但是如果有人能帮助我,我将不胜感激

编辑:

在处理数据错误事件时,我发现错误上下文是由堆栈跟踪提供的以下信息显示的:

dataGridView1_DataError at offset 433 in file:line:column <filename unknown>:0:0
OnDataError at offset 370 in file:line:column <filename unknown>:0:0
OnDataErrorInternal at offset 47 in file:line:column <filename unknown>:0:0
GetError at offset 156 in file:line:column <filename unknown>:0:0
GetErrorText at offset 149 in file:line:column <filename unknown>:0:0
Paint at offset 179 in file:line:column <filename unknown>:0:0
PaintRows at offset 1551 in file:line:column <filename unknown>:0:0
PaintGrid at offset 675 in file:line:column <filename unknown>:0:0
OnPaint at offset 785 in file:line:column <filename unknown>:0:0
PaintWithErrorHandling at offset 161 in file:line:column <filename unknown>:0:0
WmPaint at offset 831 in file:line:column <filename unknown>:0:0
WndProc at offset 689 in file:line:column <filename unknown>:0:0
WndProc at offset 275 in file:line:column <filename unknown>:0:0
OnMessage at offset 19 in file:line:column <filename unknown>:0:0
WndProc at offset 49 in file:line:column <filename unknown>:0:0
DebuggableCallback at offset 100 in file:line:column <filename unknown>:0:0
DispatchMessageW at offset 0 in file:line:column <filename unknown>:0:0
System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop at offset 647 in file:line:column <filename unknown>:0:0
RunMessageLoopInner at offset 364 in file:line:column <filename unknown>:0:0
RunMessageLoop at offset 97 in file:line:column <filename unknown>:0:0
RunDialog at offset 51 in file:line:column <filename unknown>:0:0
ShowDialog at offset 911 in file:line:column <filename unknown>:0:0
mnusViewParagraphHistory_Click at offset 273 in file:line:column <filename unknown>:0:0
RaiseEvent at offset 115 in file:line:column <filename unknown>:0:0
OnClick at offset 70 in file:line:column <filename unknown>:0:0
HandleClick at offset 201 in file:line:column <filename unknown>:0:0
HandleMouseUp at offset 520 in file:line:column <filename unknown>:0:0
FireEventInteractive at offset 137 in file:line:column <filename unknown>:0:0
FireEvent at offset 280 in file:line:column <filename unknown>:0:0
OnMouseUp at offset 178 in file:line:column <filename unknown>:0:0
OnMouseUp at offset 38 in file:line:column <filename unknown>:0:0
WmMouseUp at offset 721 in file:line:column <filename unknown>:0:0
WndProc at offset 2362 in file:line:column <filename unknown>:0:0
WndProc at offset 42 in file:line:column <filename unknown>:0:0
WndProc at offset 74 in file:line:column <filename unknown>:0:0
WndProc at offset 54 in file:line:column <filename unknown>:0:0
OnMessage at offset 19 in file:line:column <filename unknown>:0:0
WndProc at offset 49 in file:line:column <filename unknown>:0:0
DebuggableCallback at offset 100 in file:line:column <filename unknown>:0:0
DispatchMessageW at offset 0 in file:line:column <filename unknown>:0:0
System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop at offset 647 in file:line:column <filename unknown>:0:0
RunMessageLoopInner at offset 364 in file:line:column <filename unknown>:0:0
RunMessageLoop at offset 97 in file:line:column <filename unknown>:0:0
Run at offset 49 in file:line:column <filename unknown>:0:0
Main at offset 77 in file:line:column <filename unknown>:0:0
_nExecuteAssembly at offset 0 in file:line:column <filename unknown>:0:0
ExecuteAssembly at offset 109 in file:line:column <filename unknown>:0:0
RunUsersAssembly at offset 42 in file:line:column <filename unknown>:0:0
ThreadStart_Context at offset 99 in file:line:column <filename unknown>:0:0
Run at offset 176 in file:line:column <filename unknown>:0:0
Run at offset 44 in file:line:column <filename unknown>:0:0
ThreadStart at offset 68 in file:line:column <filename unknown>:0:0
dataGridView1\u文件中偏移量433处的数据错误:行:列:0:0
文件中偏移量370处的OnDataError:行:列:0:0
文件中偏移量47处的OnDataErrorInternal:行:列:0:0
文件中偏移量156处的GetError:行:列:0:0
文件:行:列:0:0中偏移量149处的GetErrorText
在文件:行:列:0:0中偏移179处绘制
文件:行:列:0:0中偏移量为1551的绘制行
文件:行:列:0:0中偏移675处的油漆网格
文件:行:列:0:0中偏移785处的OnPaint
文件:行:列:0:0中偏移量161处的处理
文件:行:列:0:0中偏移831处的WmPaint
文件中偏移量689处的WndProc:行:列:0:0
文件中偏移量275处的WndProc:行:列:0:0
文件中偏移量为19的OnMessage:行:列:0:0
文件:行:列:0:0中偏移量49处的WndProc
文件:行:列:0:0中偏移量为100的DebuggableCallback
文件:行:列:0:0中偏移量0处的DispatchMessageW
System.Windows.Forms.unsafentiveMethods.IMsoComponentManager.FPushMessageLoop位于文件中的偏移量647处:行:列:0:0
文件:行:列:0:0中偏移量364处的RunMessageLoopInner
文件:行:列:0:0中偏移量97处的RunMessageLoop
在文件:行:列:0:0中偏移量51处运行对话框
文件:行:列:0:0中偏移量911处的ShowDialog
mnusViewParagraphHistory\在文件:行:列:0:0中的偏移量273处单击
文件:行:列:0:0中偏移量115处的RaiseEvent
在文件:行:列:0:0中的偏移量70处单击一次
文件:行:列:0:0中偏移量201处的HandleClick
文件中偏移量520处的HandleMouseUp:行:列:0:0
文件:行:列:0:0中偏移量137处的FireEventInteractive
文件:行:列:0:0中偏移量280处的FireEvent
文件中偏移量178处的OnMouseUp:行:列:0:0
文件中偏移量38处的OnMouseUp:行:列:0:0
文件:行:列:0:0中偏移量721处的WmMouseUp
文件:行:列:0:0中偏移量2362处的WndProc
文件:行:列:0:0中偏移量42处的WndProc
文件:行:列:0:0中偏移量74处的WndProc
文件:行:列:0:0中偏移量54处的WndProc
文件中偏移量为19的OnMessage:行:列:0:0
文件:行:列:0:0中偏移量49处的WndProc
文件:行:列:0:0中偏移量为100的DebuggableCallback
文件:行:列:0:0中偏移量0处的DispatchMessageW
System.Windows.Forms.unsafentiveMethods.IMsoComponentManager.FPushMessageLoop位于文件中的偏移量647处:行:列:0:0
文件:行:列:0:0中偏移量364处的RunMessageLoopInner
文件:行:列:0:0中偏移量97处的RunMessageLoop
在文件:行:列:0:0中的偏移量49处运行
文件中偏移量77处的干管:行:列:0:0
_文件:行:列:0:0中偏移量为0的nExecuteAssembly
文件:行:列:0:0中偏移量109处的ExecuteAssembly
文件:行:列:0:0中偏移量42处的RunUsersAssembly
文件:行:列:0:0中偏移量99处的ThreadStart\u上下文
在文件:行:列:0:0中的偏移量176处运行
在文件:行:列:0:0中的偏移量44处运行
螺纹起点在文件:行:列:0:0中的偏移量68处

如果您接受对话框,它会重复3次,但没有停止的迹象。

我已经找出了问题所在。发生错误的点在直线上

parHRes.Clear();

datagridview不喜欢用作数据源的列表现在为空。在其前面添加一行以将数据源更改为其他内容可以解决此问题。

按照错误消息的建议处理DataError事件,并获得正确的堆栈跟踪。我感谢您回答了自己的问题,但能否添加详细说明解决方案的答案?这样,在所需的等待之后,您可以选择它作为正确答案并结束问题。这似乎有点奇怪,但我们就是这样做的。谢谢。我本来打算去的,但是当我尝试的时候,它告诉我需要等6个小时才能去