On Thu, Jul 9, 2009 at 2:06 AM, John<[email protected]> wrote:
> On Wednesday 08 July 2009 04:46:20 pm Miguel Lopes wrote:
>> I'm trying without success to have a grid with two checkboxes.
>>
>> The first checkbox (contactSelect) allows me to indicate which records
>> to select. the second indicates if the record is to be shared
>> (contactShare) (just something about the record).
>> My problem is that most checkbox clicks somehow affect the other
>> checkbox. This happens irrespectively of if I press contactSelect or
>> contactShare, and even affects records in different rows.
>>
>> I can't seem to find a solution for this. Here's my bizobj code. Any ideas?
>>
>> class ContactBizobj(dabo.biz.dBizobj):
>> def afterInit(self):
>>
>> ..., ...
>>
>> self.VirtualFields.update({'contactSelect': self.contactSelect,
>>
>> 'contactShare': self.contactShare})
>>
>> def contactSelect(self):
>> if self.Record.contact_id in self.__selectedContactsToAssign:
>> # it's already selected, unselect
>> del
>> self.__selectedContactsToAssign[self.Record.contact_id]
>> return False
>> else:
>> # not selected, select it - "False" means it is not
>> shared
>>
>> self.__selectedContactsToAssign[self.Record.contact_id] = False
>> return True
>>
>> def contactShare(self):
>> if self.Record.contact_id in self.__selectedContactsToAssign
>> and \
>> self.__selectedContactsToAssign[self.Record.contact_id] ==
>> False:
>> # not shared, share it - "True" means it is shared
>>
>> self.__selectedContactsToAssign[self.Record.contact_id] = True
>> return True
>> else:
>> return False
>>
>> ..., ...
>>
>> def initProperties(self):
>> self.__selectedContactsToAssign={}
>>
>>
>> TIA,
>> Miguel
>
> On the surface I don't see anything wrong with the bizobj. What does the grid
> code look like? In the grid you should be marking the fields as 'boolean'.
> I have just yesterday coded a grid with two check boxes and it appears to
> work OK. However, my fields are not virtual fields.
>
I'm thinking on an alternative UI to accomplish the same goal, but
nevertheless I cannot spot what is wrong with this.
My grid code was initially in cdxml, but this coded version has the
same problem.
class SetOpptyContactsAsDlg(dui.dForm):
def initProperties(self):
self.CxnName = "mainCnx"
self.Height = 511
self.Width = 976
def afterInit(self):
sz = self.Sizer = dui.dSizer('v')
grid = dui.dGrid(self, RegID="dgSelectContact",
DataSource="contact", SelectionMode="Row")
grid.addColumn(Name="title", DataField="title_id",
DataType="integer", Width=64, Caption=u"Título", Expand=False)
grid.addColumn(Name="contact", DataField="contact",
DataType="string", Width=250, Caption=u"Contacto", Expand=False)
grid.addColumn(Name="contact_status_id",
DataField="contact_status_id", DataType="integer", Width=90,
Caption=u"Estado", Expand=False)
grid.addColumn(Name="account", DataField="account",
DataType="string", Width=250, Caption=u"Conta", Expand=False)
grid.addColumn(Name="contactSelect",
DataField="contactSelect", DataType="bool", Width=83,
HorizontalAlignment="Center", Caption=u"Selecciona", Expand=False)
grid.addColumn(Name="contactRole", DataField="contactRole",
DataType="integer", Width=125, HorizontalAlignment="Center",
Caption=u"Papel", Expand=False)
grid.addColumn(Name="contactShare", DataField="contactShare",
DataType="bool", Width=75, HorizontalAlignment="Center",
Caption=u"Cruza", Expand=False)
hSz = dui.dSizer('h')
hSz.appendSpacer(20, proportion=1)
self.btnCancel = dui.dButton(self, Caption=u"Cancela")
hSz.append(self.btnCancel, layout="x", proportion=0, border=5)
self.btnSave = dui.dButton(self, Caption=u"Guarda")
hSz.append(self.btnSave, layout="x", proportion=0, border=5)
sz.append(grid, layout="x", proportion=1, border=15)
sz.append(hSz, layout="x", proportion=0, halign="right", border=10)
# Event bindings
self.bindEvent(dabo.dEvents.Close, self.onClose)
self.btnCancel.bindEvent(dabo.dEvents.Hit, self.onCancel)
self.btnSave.bindEvent(dabo.dEvents.Hit, self.onSave)
def afterInitAll(self):
self.requery()
def createBizobjs(self):
# Primary Bizobj - all the contacts in the db
contactBizobj = self.Application.biz.ContactBizobj(self.Connection)
self.addBizobj(contactBizobj)
def onClose(self, evt):
self.Form.toggleEnabled()
def onCancel(self, evt):
self.close()
def onSave(self, evt):
# TODO: save
# create new oppty_contact records according to selections.
self.close()
Miguel
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message:
http://leafe.com/archives/byMID/[email protected]