6月发了一个帖子,是总结AutoBill项目的一点心得。最近改动了项目,今天再运行时发现了一个错误。该帖子是关于使用DataGrid的一点技巧,可以通过模版列定制要显示的表格内容。在后代码中定义了一系列的GetXXColumn函数,这里的XX实际上是指代不同数据类型。在页面文件的模版列里通过调用这些函数可以得到自己定义的指定数据类型的列的显示HTML代码,以此控制显示界面。在这些函数中需要传如一些参数,一个是记录集中的行号,一个是列id,以及其他需要的参数。在原来代码中原本应当传入行号的位置我鬼使神差的传入了这样的代码:DataBinder.Eval(Container.DataItem, "PI_id"),这个代码将读取PI_id字段的内容用作参数。在以前的数据环境中PI_id字段内容跟记录集的行号是一致的,但在现在的数据环境里面这一情况改变了。所以在后代码中再使用PI_id字段作为数据集的索引来使用必然产生越界错误。把此处的代码修改为Container.ItemIndex,即传递模版列当前记录的行号(记录集中的索引)。此后就运行正常了。
模版列还有许多自己不懂的东西,需要仔细探索一下,可以总会有些这样或那样的事情和心情,不能再想以前一样能可以潜心钻研了,郁闷啊。