因为一个项目需要把表格的表头固定,而且美观方面要求还蛮高的,在网上搜索了很多资料,能固定表头的方案挺多的,但表头是固定了,而内容和表头的格式相差太远了,所以,我就自己着手弄了一个,下面说说我的实现思路。
尝试过很多方案,均无法很好的手动控制DataGrid的格式,比如设置了DataGrid的宽度(甚至是在ItemCreate事件里写强制宽度的代码),都不能完全指定DataGrid,所以往往做好了表头,但由于每次获取的数据都不尽相同,所以表头和表内容的结构格式总是不一致。
沿着这个思路,用两个DataGrid就可以解决格式的问题,事实也证明是可以的,但必须要解决就是数据获取,尤其是表头和表内容是做在不同页面的情况(这种做法美观可以很自由的控制),总不可能每个DataGrid都查询一次数据库。
基于这里,我的解决方法是,把查询的数据集ds声明为static,这样两个不同页面的DataGrid就可以共享一个ds,再配合一个线程锁,让其在同一时间只允许一个线程修改,当两个DataGrid都加载完数据以后,立刻把ds的记录清除掉。
这里唯一的问题是ds访问安全问题,事实上这个也的确不好控制,因为是在WEB上面,连接用户太多的时候,可能会出现问题。有朋友说可以把ds序列化一个文件,在另一个页面读取它;也可以把ds声名在一个父类中,调用ds的页面继承这个类(子类如何得到父类的实例数据??)……这些偶还不太懂,正在研究中,呵呵。
大家有什么更好的方案,不访问一起讨论。
尝试过很多方案,均无法很好的手动控制DataGrid的格式,比如设置了DataGrid的宽度(甚至是在ItemCreate事件里写强制宽度的代码),都不能完全指定DataGrid,所以往往做好了表头,但由于每次获取的数据都不尽相同,所以表头和表内容的结构格式总是不一致。
沿着这个思路,用两个DataGrid就可以解决格式的问题,事实也证明是可以的,但必须要解决就是数据获取,尤其是表头和表内容是做在不同页面的情况(这种做法美观可以很自由的控制),总不可能每个DataGrid都查询一次数据库。
基于这里,我的解决方法是,把查询的数据集ds声明为static,这样两个不同页面的DataGrid就可以共享一个ds,再配合一个线程锁,让其在同一时间只允许一个线程修改,当两个DataGrid都加载完数据以后,立刻把ds的记录清除掉。
这里唯一的问题是ds访问安全问题,事实上这个也的确不好控制,因为是在WEB上面,连接用户太多的时候,可能会出现问题。有朋友说可以把ds序列化一个文件,在另一个页面读取它;也可以把ds声名在一个父类中,调用ds的页面继承这个类(子类如何得到父类的实例数据??)……这些偶还不太懂,正在研究中,呵呵。
大家有什么更好的方案,不访问一起讨论。