Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

foreignKey and includeFrom - refetch of displayField

$
0
0
I have a ds.xml with the following:
Code:

<field name="taskName" includeFrom="task.name" />
<field name="taskId" foreignKey="task.id" displayField="taskName" type="text" >

In my Master/Details presentation, the ListGrid gets loaded and the taskName comes back in the fetch response along with the taskId as expected and it shows the taskName in the ListGrid for the taskId field which is excellent.

When I select the row in the ListGrid however the taskName that was retrieved in the original fetch is not used and a 2nd fetch request is made to retrieve the display field for the taskId. Is there something I can do to have the form use the taskName that came back in the record and not perform a 2nd fetch to attempt to retrieve it?

Original Fetch response:
Code:

data:[
      {
          taskName:"Task 1",
          taskId:"da48c9cfc0a80165006e76b4a013aa22",
          taskRefCount:9,
          id:"2e9a2cc445ad4d99bd7d88b531b1b369"
      },
      {
          taskName:"Task 2",
          taskId:"da4914b3c0a80165006f8d746592cde8",
          taskRefCount:7,
          id:"d151930348ba4683ae985ec642361cee"
      },
      {
          taskName:"Task 3",
          taskId:"410d696bc0a801c9017e5dbf756ecbd5",
          taskRefCount:1,
          id:"c1e4486ee12a4efab93b96df6e5d9f69"
      }
  ]

And when I select a record in the list grid thereby calling editRecord(record) on the form this request is sent to the server:
Code:

{
    dataSource:"task",
    operationType:"fetch",
    componentId:"isc_OpswiseDynamicForm_0",
    data:{
        id:"410d696bc0a801c9017e5dbf756ecbd5"
    },
    textMatchStyle:"exact",
    callback:{
        target:[SelectItem ID:isc_SelectItem_2 name:taskId],
        methodName:"fetchMissingValueReply"
    },
    showPrompt:false,
    oldValues:{
        sysId:"410d696bc0a801c9017e5dbf756ecbd5"
    },
    requestId:"task$6273",
    internalClientContext:{
        dataValue:"410d696bc0a801c9017e5dbf756ecbd5",
        filterLocally:{
        }
    },
    fallbackToEval:false,
    componentContext:"taskId",
    lastClientEventThreadCode:"MUP1",
    bypassCache:true
}

I am not sure why the 2nd fetch is being performed when the display field is already contained in the record. Is there anything I can do to use that field and not perform the 2nd fetch? (We sometimes have 4 or 5 fields defined the same way for some datasources so the extra fetch becomes 4 or 5 extra fetches per row selected).

Viewing all articles
Browse latest Browse all 4756

Trending Articles