问题描述
在GridView里如何实现多条件的排序。如:排序列为:省,城市。点击省,排序,然后点击城市,省不变,再按照城市排序。
解决方案
解决方案二:
点击后把要排序的列记到变量里然后根据这些列写sql排序就可以了比方说有个变量dimm_strOrderasstring=""点省时if(m_strOrder.Length>0)thenm_strOrder=m_strOrder&",";m_strOrder=m_strOrder&"省字段"strSql="SELECT*FROM表ORDERBY"+m_strOrder;绑定gridview点城市时if(m_strOrder.Length>0)thenm_strOrder=m_strOrder&",";m_strOrder=m_strOrder&"市字段"strSql="SELECT*FROM表ORDERBY"+m_strOrder;
解决方案三:
帮顶下
解决方案四:
建议使用BindingSource,然后将BindingSource作为DataGridView的数据源,把DataTable作为BindingSource的数据源这样,要怎么排序就怎么排序。如:BindingSource.Sort="省,城市"格式:BindingSource.Sort="列名1,列名2,列名3,...,列名n"
解决方案五:
gxingmin在1楼的方法是用vb6的思想套用到vb.net中而且所见非所得,即每次重新排序后都从数据库中重新读取数据,而每次读取的数据不一定会一样,这样对于财务报告来说是不合理的。而且给对账带来麻烦,即工作不能做为有效工作来进行。财务报告,查询出来的结果是什么样就应当是什么样,除非使用者人为决定重新查询。否则即使数据库中的数据发生改变,也应当将错就错。这叫工作的连续性和有效性
解决方案六:
不用BindingSource,用DataTable.DefaultView.Sort="省,城市"也可以其中DataTable为与DataGridView的数据源,不过建议还是使用BindingSource,因为用BindingSource对DataGridView的操作会方便许多,比如DataGridView当前行,就是BindingSource的当前行