以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  怎样获得datalist中已经build的列名称(不是列标题)。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=2719)

--  作者:mr725
--  发布时间:2009/5/8 13:49:00
--  怎样获得datalist中已经build的列名称(不是列标题)。

如题::


--  作者:cpayinyuan
--  发布时间:2009/5/8 14:09:00
--  

目前好像不能.

    尽管在窗口中显示表时,绝大多数情况下可以用Table代替DataList.但是,根据贺老师的说法,DataList和Table有着本质的不同.DataList是一个高级的数据列表框,而窗口中的Table是把表挪到了窗口中来显示.从程序设计的道理上来讲,在窗口中显示数据用DataList更符合惯例,在窗口中直接显示表编辑表(即Table)总感觉是一种电子表格的操作方式,不符合程序设计的惯例.
     所以,个人建议狐表作为一个开发工具不应倡导用户直接在窗口中修改表/显示表,而应尽量符合软件设计的惯例,培养大家好的习惯.所以,建议狐表要进一步增强DataList的功能:
例如楼主提到的获得DataList的显示列,
例如以前提到的DataList重新Build时速度太慢的问题.
另外,我再提一个小建议:希望DataList中应增加设置交替行背景色功能(这个在显示的时候很方便,用样式来实现这一功能速度又慢又不方便).

[此贴子已经被作者于2009-5-8 14:10:38编辑过]

--  作者:shxiaoya
--  发布时间:2009/5/8 14:16:00
--  
试试从ColumnList取值
--  作者:yangming
--  发布时间:2009/5/8 14:17:00
--  
据贺老师说,Table也可以在窗口中动态增加和删除了,下次更新就可以用了,所以我想,还是多用Table,不是更方便?
--  作者:don
--  发布时间:2009/5/8 14:24:00
--  
以下是引用cpayinyuan在2009-5-8 14:09:00的发言:

目前好像不能.

应该可以的,试试:

Dim
dst As WinForm.DataList = e.Form.Controls("DataList1")

Dim Names As New List(Of String)

For Each dc As DataCol In dst.DataTable.DataCols
    Names.Add(d
c.Name)
Next


--  作者:cpayinyuan
--  发布时间:2009/5/8 14:31:00
--  
以下是引用yangming在2009-5-8 14:17:00的发言:
据贺老师说,Table也可以在窗口中动态增加和删除了,下次更新就可以用了,所以我想,还是多用Table,不是更方便?

     狐表本身应该算作数据库软件,不是电子表格,在表上进行汇总统计本来就感觉怪怪的!根据数据库软件的惯例,数据库中的表是储存数据的地方,不是进行汇总统计/显示数据的地方,所以数据的汇总统计及显示,还是与数据的储存分开更好一点,这样更符合数据库系统的惯例,也更有利于数据的安全完整.所以,在狐表中在Table中进行显示,包括进行汇总统计,功能上完全可以实现,但我始终认为还是应该把两者分开更好一些.即使为了照顾大部分人的意见允许用Table作为汇总统计和显示,也不应因此而忽视增强数据列表的功能.
    我的观点不一定对,仅供贺老师和大家参考.


--  作者:yangming
--  发布时间:2009/5/8 14:41:00
--  
这又回到前二天大家讨论的问题了,呵呵
Table和DataTables的区别了
--  作者:狐狸爸爸
--  发布时间:2009/5/8 15:05:00
--  

一般来说,统计是统计,数据是数据。
虽然foxtable提供了汇总模式,让数据和统计结果可以混合在一起,但是也提供了分组统统计和交叉统计,得到纯粹的统计结果,大家愿意分开也行,不愿意分开也行,各取所需啊。


--  作者:mr725
--  发布时间:2009/5/8 15:26:00
--  
以下是引用don在2009-5-8 14:24:00的发言:

应该可以的,试试:

Dim
dst As WinForm.DataList = e.Form.Controls("DataList1")

Dim Names As New List(Of String)

For Each dc As DataCol In dst.DataTable.DataCols
    Names.Add(d
c.Name)
Next

Dim dst As WinForm.DataList = Forms("窗口名称").Controls("DataList1")
Dim Names As New List(Of String)  \'在此这行不需要

For Each dc As DataCol In dst.DataTable.DataCols
    output.show(d
c.Name)  \'这样可以显示datalist里的列名了。谢谢don
Next

交叉统计的显示结果:
....
...
crsz1
crsz2
crsz3
crsz4
crsz5
...
...

[此贴子已经被作者于2009-5-8 15:48:27编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/5/8 15:30:00
--  
交叉统计生成的列名,就是:

crsz1
crsz2
crsz3
crsz4
crsz5