使用列表中未显示的字段进行后续搜索

时间:2014-12-08 14:29:09

标签: python mysql python-2.7 wxpython

我使用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以进行后续搜索。创建一个隐藏数组以保存数据似乎效率低下,并且随着诸如分页和滚动等功能的添加,可能会变得非常复杂。

提前致谢...

1 个答案:

答案 0 :(得分:1)

我会使用ObjectListView代替wx.listctrl。它允许您非常容易地存储除显示内容之外的数据。如果单击某个项目将导致您执行另一个应该在第二个listctrl类型小部件中显示的搜索,那么这使我更推荐ObjectListView。您可以将第一个放在框架的顶部,而第二个只有在用户单击第一个中的项目并且搜索结果时才会显示。

或者您可以打开第二个窗口,其中ObjectListview显示结果。以下教程应该可以帮助您开始切换到ObjectListView:

这个小部件最近被分叉,因为不再维护原始小部件。请参阅以下链接以获取最新版本和文档: