[Seaside] Add button not showing it's page

LK s002 at landr.net
Wed Jul 28 06:42:53 CEST 2004


Sorry, I'm Larry Kelly. 

the addNewItem needs a #children method? What would go in it?  I'm 
unclear what the #children method is for?  Sorry to be so dense.:)
-Larry

Julian Fitzell wrote:

> Hi s002,
>
> Say, do you have a name? :)
>
> So the problem below is that you are using a render method as your 
> callback, which is not at all what you want to do.
>
> Every time a request comes in, the callbacks are executed and then the 
> root component is obtained and asked to render itself to be displayed 
> to the user.  Your callback needs to perform some action to cause the 
> display state to change before the next render pass is executed.
>
> When you call #renderAddOn: in your callback, nothing changes that 
> would cause PMLogsView to render itself any differently than the last 
> time, which is why you see the same page drawn again.
>
> What you probably want to do here is have another component, say 
> PMLogItemEditor, which you pass a new instance of PMLogItem into.  For 
> example you could write an action method like:
>
> addNewItem
>    |item|
>    item := PMLogItem new.
>    "store the item however you do that"
>    self call: (self editorComponentFor: item)
>
> And then in your render method use:
>
> html anchorWithAction: [self addNewItem] text: 'Add'
>
> Obviously you'd have to implement a #children method as well as 
> #editorComponentFor: to keep track of the editor component...
>
> Julian
>
> s002 wrote:
>
>> I have an object that shows a record from a GOODS database.  I 
>> created a link to 'add' a new record.  When I click on the link, the 
>> screen flashes and stays  at the recordlist page.  Can someone help me.
>> PMLogsView>>renderContentOn: html
>>     | |
>>     html table: [
>>         html tableRow: [html tableHeading: 'View all Log Entries'; 
>> space; space; space.
>>             html tableData: [html anchorWithAction: [self 
>> renderAddOn: html] text: 'Add']]].
>>     html attributeAt: 'cellspacing' put: 0; attributeAt: 
>> 'cellpadding' put: 5; attributeAt: 'border' put: 2.
>>     html table: [
>>             allRecords do: [:i |
>>                 html tableRow: [
>>                     html tableData: [html anchorWithAction: [self 
>> delete: i from: db] text: 'Del'].
>>                     html tableData: i type.
>>                     html tableData: i entryDate.
>>                     html tableData: i startTime.
>>                     html tableData: i entryText.
>>                     html tableData: i endTime.
>>             ].
>>         ].
>>         html tableRow: []
>> ]
>> ------
>> and here is the
>> PMLogsView>>renderAddOn: html
>> " show add new log form"
>>     aRecord := PMLogItem new.
>>     aRecord initialize.
>>     html form: [
>>     html table: [
>>         html tableRow: [html tableHeading: 'New Log Entry']].
>>     html text: 'TEST NEW ENTRY PAGE'.
>>     html text: aRecord entryDate.]
>>     _______________________________________________
>> Seaside mailing list
>> Seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/listinfo/seaside
>
> _______________________________________________
> Seaside mailing list
> Seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/seaside
>
>



More information about the Seaside mailing list