DataView dv = bllCommonMode.getModuleListByCache(); dv.RowFilter = "isused=1 and moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")"; 这里过滤条件 isused=1 and moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ") 中的 moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ") 到这里会报错怎么解决
既然你是要实现DataTable的过滤,那么在过滤时所使用到的列,必须是当前DataTable结构中实际存在的,因此,你必须先得到:select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + " 这个ID列表,然后再代入过滤条件中。[另外,有可能isused=1你要写成isused='1',我好像记得我在使用的时候发现过,会失去对数据类型的定义,将全部变成字符串类型的] 详细的你可以查一下:DataTable.Select()的用法
DataRow[] rows = DataTable.Select(filter);
或用dataview
http://www.cnblogs.com/levin9/articles/841942.html
DataView dv = bllCommonMode.getModuleListByCache();
dv.RowFilter = "isused=1 and moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")";
这里过滤条件
isused=1 and moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")
中的
moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")
到这里会报错怎么解决
既然你是要实现DataTable的过滤,那么在过滤时所使用到的列,必须是当前DataTable结构中实际存在的,因此,你必须先得到:select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + " 这个ID列表,然后再代入过滤条件中。[另外,有可能isused=1你要写成isused='1',我好像记得我在使用的时候发现过,会失去对数据类型的定义,将全部变成字符串类型的]
详细的你可以查一下:DataTable.Select()的用法