On Thu, Jul 9, 2009 at 2:06 AM, John<jfabi...@yolo.com> 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: Dabo-users@leafe.com
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/a19730800907091409sbc4a454i9b22aab38a912...@mail.gmail.com

Reply via email to