返回首页

大家好,

我有以下问题。

我有一个大的数据库表内的MS SQL数据库,我里面的DataTable对象。 DataTable对象本身,我显示的数据绑定到DataGridView对象。有时我想隐藏一些数据,这是不是有关当前视图。里面的DataTable的DataView对象似乎是最好的方式做到这一点。 DataView中有一个属性的RowFilter在这里您可以设置可见行。输入的RowFilter是一个SQL字符串。不幸的是,我得到一个堆栈溢出异常,当字符串太长。下列情况发生时,则:

"在System.Data.dll中发生未处理的异常类型'System.StackOverflowException'??BR />
我已经尝试过分割字符串,并调用的RowFilter几次,但是,这将覆盖旧的设置。同样的情况时,调用DataTable对象的"选择"功能。

没有人有类似的问题并找到解决办法。

下面,我已经安排我的代码:

感谢所有帮助

sahit


DataTable sourceTable = new DataTable(); 

SqlStringBuilder filter = new SqlStringBuilder();

// Set source from database



// Fill "filter" with a very large string

// Like {[intType = '1']} AND(intFamilyID = '2' OR intFamilyID = '4' OR 

   intFamilyID = '6') .........................} 

// 17 000 signs



// Here happens the problem

sourceTable.DefaultView.RowFilter = = filter.ToString();

 

// The same happens when trying this. 

DataRow[] resultSet = sourceTable.Select(filter.ToString());

回答

评论会员: 时间:2