我使用wx.ListCtrl来显示数据库查询的结果。如果用户然后选择一个项目,我想使用一个非显示字段(Client.idClient)来查询另一个表格并显示结果(只能是一行)。显示的查询和“核心”是: -
sql = "SELECT Client.idClient, Client.LastName, Client.FirstName, \
MedicalCondition FROM Client INNER JOIN MedicalCondition \
ON Client.idClient = MedicalCondition.idClient \
ORDER BY Client.LastName ASC, Client.FirstName ASC, MedicalCondition
try:
cursor.execute(sql)
except ValueError:
print "Error: unable to read data"
print("Error:", ValueError)
rows = cursor.fetchall()
self.listCtrl.InsertColumn(0, 'Last Name', width = 175)
self.listCtrl.InsertColumn(1, 'First Name', width = 150)
self.listCtrl.InsertColumn(2, 'Condition', width=175)
#print 'Done headings'
n=0
for r in rows:
self.listCtrl.InsertStringItem(n, r[1])
self.listCtrl.SetStringItem(n, 1, r[2])
self.listCtrl.SetStringItem(n, 2, r[3])
n+=1
我的问题是我如何捕获Client.idClient以进行后续搜索。创建一个隐藏数组以保存数据似乎效率低下,并且随着诸如分页和滚动等功能的添加,可能会变得非常复杂。
提前致谢...
答案 0 :(得分:1)
我会使用ObjectListView代替wx.listctrl。它允许您非常容易地存储除显示内容之外的数据。如果单击某个项目将导致您执行另一个应该在第二个listctrl类型小部件中显示的搜索,那么这使我更推荐ObjectListView。您可以将第一个放在框架的顶部,而第二个只有在用户单击第一个中的项目并且搜索结果时才会显示。
或者您可以打开第二个窗口,其中ObjectListview显示结果。以下教程应该可以帮助您开始切换到ObjectListView:
这个小部件最近被分叉,因为不再维护原始小部件。请参阅以下链接以获取最新版本和文档: