DocumentID ignored in AnchorTab's in multiple document envelope - docusignapi

I found another post on this topic however noone has answered that post and I wasn't able to add my comments to it.
I am testing a multi-document / multi-signer scenario via the SOAP API. I have 2 documents, each with 2 signer fields tagged with values recipient1Sign and recipient2Sign respectively. I have specified AnchorTabStrings for the signer fields on my xml to correlate with the anchor tags on the forms (see sample xml below). I'm finding that the Tab definition and it's associated DocumentID does not provide scoping for the AnchorTabString when DocuSign adds the signer tags to the form meaning that if different recipients on different doucuments use tabs that have AnchorTabStrings with the same value, both recipients see signer tabs on both documents. In other words, the tab definition and its corresponding AnchorTabString definitions are not being considered unique within the envelope. The DocuSign documentation pretty clearly states that the AnchorTabString definition is supposed to be scoped to a document (which is what I want), not scoped at the envelope level (which is what my testing is showing).
I've included excerpts of the recipeint and tab definitions being used in my testing below.
<ns1:Recipients>
<ns1:Recipient>
<ns1:ID>1</ns1:ID>
<ns1:UserName>John Doe</ns1:UserName>
<ns1:SignerName>John Doe</ns1:SignerName>
<ns1:Email>johndoe#abc.com</ns1:Email>
<ns1:Type>Signer</ns1:Type>
<ns1:RequireIDLookup>false</ns1:RequireIDLookup>
<ns1:RoutingOrder>1</ns1:RoutingOrder>
</ns1:Recipient>
<ns1:Recipient>
<ns1:ID>2</ns1:ID>
<ns1:UserName>Jane Doe</ns1:UserName>
<ns1:SignerName>Jane Doe</ns1:SignerName>
<ns1:Email>janedoe#xyz.com</ns1:Email>
<ns1:Type>Signer</ns1:Type>
<ns1:RequireIDLookup>false</ns1:RequireIDLookup>
<ns1:RoutingOrder>1</ns1:RoutingOrder>
</ns1:Recipient>
<ns1:Recipient>
<ns1:ID>3</ns1:ID>
<ns1:UserName>Jack Doe</ns1:UserName>
<ns1:SignerName>Jack Doe</ns1:SignerName>
<ns1:Email>jackdoe#xyz.com</ns1:Email>
<ns1:Type>Signer</ns1:Type>
<ns1:RequireIDLookup>false</ns1:RequireIDLookup>
<ns1:RoutingOrder>1</ns1:RoutingOrder>
</ns1:Recipient>
</ns1:Recipients>
The example requires definition of 2 documents in the XML:
<ns1:Documents>
<ns1:Document>
<ns1:ID>1</ns1:ID>
<ns1:Name>Test Doc 1</ns1:Name>
<ns1:PDFBytes>JVBERi0xLjcNJeLjz</ns1:PDFBytes>
<ns1:TransformPdfFields>true</ns1:TransformPdfFiel​ds>
<ns1:FileExtension>PDF</ns1:FileExtension>
</ns1:Document>
<ns1:Document>
<ns1:ID>2</ns1:ID>
<ns1:Name>Test Doc 2</ns1:Name>
<ns1:PDFBytes>9MNCjExIDAgb2Jq</ns1:PDFBytes>
<ns1:TransformPdfFields>true</ns1:TransformPdfFiel​ds>
<ns1:FileExtension>PDF</ns1:FileExtension>
</ns1:Document>
</ns1:Documents>
The example requires definition of signer tabs in the xml:
<ns1:Tab>
<ns1:DocumentID>1</ns1:DocumentID>
<ns1:RecipientID>1</ns1:RecipientID>
<ns1:ScaleValue>50</ns1:ScaleValue>
<ns1:AnchorTabItem>
<ns1:AnchorTabString>recipient1Sign</ns1:AnchorTabString>
<ns1:IgnoreIfNotPresent>true</ns1:IgnoreIfNotPrese​nt>
</ns1:AnchorTabItem>
<ns1:Type>SignHere</ns1:Type>
<ns1:TabLabel>Customer</ns1:TabLabel>
<ns1:TemplateLocked>true</ns1:TemplateLocke​d>
<ns1:TemplateRequired>false</ns1:TemplateRequired>
</ns1:Tab>
<ns1:Tab>
<ns1:DocumentID>1</ns1:DocumentID>
<ns1:RecipientID>2</ns1:RecipientID>
<ns1:ScaleValue>50</ns1:ScaleValue>
<ns1:AnchorTabItem>
<ns1:AnchorTabString>recipient2Sign</ns1:AnchorTabString>
<ns1:IgnoreIfNotPresent>true</ns1:IgnoreIfNotPrese​nt>
</ns1:AnchorTabItem>
<ns1:Type>SignHere</ns1:Type>
<ns1:TabLabel>Representative</ns1:TabLabel>
<ns1:TemplateLocked>true</ns1:TemplateLocked>
<ns1:TemplateRequired>false</ns1:TemplateRequired>
</ns1:Tab>
<ns1:Tab>
<ns1:DocumentID>2</ns1:DocumentID>
<ns1:RecipientID>1</ns1:RecipientID>
<ns1:ScaleValue>50</ns1:ScaleValue>
<ns1:AnchorTabItem>
<ns1:AnchorTabString>recipient1Sign</ns1:AnchorTabString>
<ns1:IgnoreIfNotPresent>true</ns1:IgnoreIfNotPrese​nt>
</ns1:AnchorTabItem>
<ns1:Type>SignHere</ns1:Type>
<ns1:TabLabel>Owner</ns1:TabLabel>
<ns1:TemplateLocked>true</ns1:TemplateLocked>
<ns1:TemplateRequired>false</ns1:TemplateRequired>
</ns1:Tab>
<ns1:Tab>
<ns1:DocumentID>2</ns1:DocumentID>
<ns1:RecipientID>3</ns1:RecipientID>
<ns1:ScaleValue>50</ns1:ScaleValue>
<ns1:AnchorTabItem>
<ns1:AnchorTabString>recipient2Sign</ns1:AnchorTabString>
<ns1:IgnoreIfNotPresent>true</ns1:IgnoreIfNotPrese​nt>
</ns1:AnchorTabItem>
<ns1:Type>SignHere</ns1:Type>
<ns1:TabLabel>Payer</ns1:TabLabel>
<ns1:TemplateLocked>true</ns1:TemplateLocked>
<ns1:TemplateRequired>false</ns1:TemplateRequired>
</ns1:Tab>
</ns1:Tabs>
..

Related

How to handle print and sign event notifications from docusign api?

We have event notifications set up to send us a notification request for user actions.
I am trying to validate the document status to figure out if an user has signed a document. When the user has signed the document using docusign, I can capture the status from TabStatuses in the request.
However, I am not unable to figure out a way to handle the scenario where an user has opted to print and sign as the response for Print and Sign notifications does not include the TabStatuses with the status.
I have tried to go through the documentation to figure out if there is a way to confirm that the user has opted to print and sign the document, but I couldn't find what I was looking for. I do get DocumentStatus which returns a name node signed_on_paper_<reference_id> but it doesn't seem like the best approach to validate that the user has opted to print and sign.
Also in the case of multiple signers, what would be the best way to identify the status of each signer.
Sample response I received when a user opted to print and sign:
<EnvelopeStatus>
<RecipientStatuses>
<RecipientStatus>
<Type>
Signer
</Type>
<Email>
sdasari#plxs.com.au
</Email>
<UserName>
Shyam Dasari
</UserName>
<RoutingOrder>
1
</RoutingOrder>
<Sent>
2019-10-15T16:23:38.06
</Sent>
<Delivered>
2019-10-15T16:23:50.15
</Delivered>
<Signed>
2019-10-15T16:24:35.167
</Signed>
<DeclineReason xsi:nil="true" />
<Status>
Completed
</Status>
<RecipientIPAddress>
115.70.163.1
</RecipientIPAddress>
<ClientUserId>
7422
</ClientUserId>
<CustomFields />
<AccountStatus>
Active
</AccountStatus>
<EsignAgreementInformation>
<AccountEsignId>
e17f1e7a-2d2f-49e7-bdc6-gibberish
</AccountEsignId>
<UserEsignId>
75eda468-405c-48a3-bf8c-gibberish
</UserEsignId>
<AgreementDate>
2019-10-15T16:23:50.15
</AgreementDate>
</EsignAgreementInformation>
<RecipientId>
e1e8e99a-b89f-4d5c-aa27-gibberish
</RecipientId>
</RecipientStatus>
</RecipientStatuses>
<TimeGenerated>
2019-10-15T16:24:55.6107604
</TimeGenerated>
<EnvelopeID>
530aa34b-1991-4bc6-b374-gibberish
</EnvelopeID>
<Subject>
Shyam Dasari has sent you a document to review and sign
</Subject>
<UserName>
Legal Gateway Sandbox
</UserName>
<Email>
callum#testsoftware.com.au
</Email>
<Status>
Completed
</Status>
<Created>
2019-10-15T16:23:37.67
</Created>
<Sent>
2019-10-15T16:23:38.093
</Sent>
<Delivered>
2019-10-15T16:23:50.307
</Delivered>
<Signed>
2019-10-15T16:24:35.167
</Signed>
<Completed>
2019-10-15T16:24:35.167
</Completed>
<ACStatus>
Original
</ACStatus>
<ACStatusDate>
2019-10-15T16:23:37.67
</ACStatusDate>
<ACHolder>
Legal Gateway Sandbox
</ACHolder>
<ACHolderEmail>
callum#test.com.au
</ACHolderEmail>
<ACHolderLocation>
DocuSign
</ACHolderLocation>
<SigningLocation>
Online
</SigningLocation>
<SenderIPAddress>
115.70.163.1
</SenderIPAddress>
<EnvelopePDFHash />
<CustomFields>
<CustomField>
<Name>
AccountId
</Name>
<Show>
false
</Show>
<Required>
false
</Required>
<Value>
12345
</Value>
<CustomFieldType>
Text
</CustomFieldType>
</CustomField>
<CustomField>
<Name>
AccountName
</Name>
<Show>
false
</Show>
<Required>
false
</Required>
<Value>
Legal Gateway
</Value>
<CustomFieldType>
Text
</CustomFieldType>
</CustomField>
<CustomField>
<Name>
AccountSite
</Name>
<Show>
false
</Show>
<Required>
false
</Required>
<Value>
demo
</Value>
<CustomFieldType>
Text
</CustomFieldType>
</CustomField>
</CustomFields>
<AutoNavigation>
true
</AutoNavigation>
<EnvelopeIdStamping>
true
</EnvelopeIdStamping>
<AuthoritativeCopy>
false
</AuthoritativeCopy>
<DocumentStatuses>
<DocumentStatus>
<ID>
4321
</ID>
<Name>
sid_0a_2s_rando_doc_2_1405
</Name>
<TemplateName />
<Sequence>
1
</Sequence>
<DocumentFields>
<DocumentField>
<Name>
reference_id
</Name>
<Value>
gibberish:1iKFJ0:gibberish-Cw
</Value>
</DocumentField>
</DocumentFields>
</DocumentStatus>
<DocumentStatus>
<ID>
2
</ID>
<Name>
Signed-on-Paper_more-gibberish-aa27-bafd4d393c02
</Name>
<TemplateName />
<Sequence>
2
</Sequence>
</DocumentStatus>
</DocumentStatuses>
</EnvelopeStatus>
If a user opted to sign using docusign's esignature, I get TabStatuses in the response which help me identify the current state of the document.
<TabStatuses>
<TabStatus>
<TabType>
SignHere
</TabType>
<Status>
Signed
</Status>
<XPosition>
699
</XPosition>
<YPosition>
754
</YPosition>
<TabLabel>
Signature 1_SignHere_gibberish_id
</TabLabel>
<TabName />
<DocumentID>
2460
</DocumentID>
<PageNumber>
1
</PageNumber>
</TabStatus>
</TabStatuses>
I am using the docusign api version 2.
When a user signs on paper there are no tabs.
Moreover, there's no way for you to know what paper was actually signed.
When the envelope is complete, you'll find an additional document in it, which is the paper that was faxed into the system. That is the only information you get back from a user that signs on paper.
(We strongly discourage use of paper, and if one uses it - there are certain limitations to what we can support).

How can I get a selector to do a partial lookup on any field in the list

I have a selector that is selecting cases among several other fields, as follows:
[PXSelector(typeof(Search2<CRCase.caseCD,
InnerJoin<PMProject,
On<CRCase.customerID, Equal<PMProject.customerID>>>,
Where<PMProject.contractID, Equal<Current<EPTimecardDetail.projectID>>>,
OrderBy<Desc<CRCase.caseCD>>>),
typeof(CRCase.caseCD),
typeof(CRCase.subject),
typeof(CRCase.createdDateTime),
typeof(CRCase.caseClassID),
typeof(CRCase.status),
typeof(CRCase.contactID),
typeof(CRCase.ownerID))]
When the selector is open, the search bar will only search on the first field - the CaseCD. If I type part of the Subject field text, I want it to show, as in other lookups, the entries that have that snippet of text in them. i.e., if I know part of the Subject field, I want it to filter or show entries filtered on that bit of text I enter.
Is there a setting in the PXSelector attribute that allows this, or would it be on the aspx page for the Selector?
In the past (unless there is something new) we set the FastFilterFields in the page.
Ex from project entry on contract cd (page PM301000):
<px:PXSegmentMask ID="edContractCD" runat="server" DataField="ContractCD" DataSourceID="ds" AutoRefresh="True">
<GridProperties FastFilterFields="Description, CustomerID, CustomerID_Customer_acctName" />
</px:PXSegmentMask>
Each field listed in FastFilterFields will be searchable in the selector.
Use of FastFilterFields will apply to PXSegmentMask or PXSelector.
Another example showing selector:
<px:PXSelector ID="edReceiptNbr" runat="server" DataField="ReceiptNbr" AutoRefresh="true">
<GridProperties FastFilterFields="InvoiceNbr, VendorID, VendorID_Vendor_acctName">
</GridProperties>
</px:PXSelector>

Create envelope using radio button group tag with DocuSign API

I have been creating envelopes using DocuSign SOAP API calls.
For one of my clients, I have to create conditional tags based upon the values of the radio button group tag selection.
I am able to create the radio button group tag with a few radio button tags fine but am not able to setup the value for each of the radio button tag. I have assigned the radio button group name for each of the radio button so that the recipient can only select one radio button from the group.
When I setup the conditional tag, I have to provide the parent tag name and the value. Since I am not able to setup the radio button tags with the values, I cannot use the the values in the conditional tags.
I am setting two properties for each of the radio button tag as shown below..
tab.value = "cc"
tab.CustomTabRadioGroupName = "paymentmethod"
in addition to type, position etc properties.
Is there any other way to setup the radio button tag values?
Thanks,
Minal
I have created a SOAP XML with a radio group having two options Yes and No, when Yes is selected then a Textbox appears, please let me know if it works for you. The trick here is CustomTabType of “Radio” make the TabLabels the same for any radio buttons you want to group together. In below example it is Paymentmethod, and Yes and No are radio options inside Paymentmethod radio group.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.docusign.net/API/3.0">
<soapenv:Header/>
<soapenv:Body>
<ns:CreateAndSendEnvelope>
<ns:Envelope>
<ns:AccountId>?</ns:AccountId>
<ns:Documents>
<ns:Document>
<ns:ID>32093411</ns:ID>
<ns:Name>Challenge3.docx</ns:Name>
<ns:PDFBytes>?</ns:PDFBytes>
<ns:FileExtension>pdf</ns:FileExtension>
</ns:Document>
</ns:Documents>
<ns:Recipients>
<ns:Recipient>
<ns:ID>45399085</ns:ID>
<ns:UserName>Test Radio Name</ns:UserName>
<ns:Email>abc#gmail.com</ns:Email>
<ns:Type>Signer</ns:Type>
<ns:RoutingOrder>1</ns:RoutingOrder>
</ns:Recipient>
</ns:Recipients>
<ns:Tabs>
<ns:Tab>
<ns:DocumentID>32093411</ns:DocumentID>
<ns:RecipientID>45399085</ns:RecipientID>
<ns:PageNumber>1</ns:PageNumber>
<ns:XPosition>285</ns:XPosition>
<ns:YPosition>304</ns:YPosition>
<ns:Type>Custom</ns:Type>
<ns:Name>Yes</ns:Name>
<ns:TabLabel>Paymentmethod</ns:TabLabel>
<ns:CustomTabType>Radio</ns:CustomTabType>
<ns:CustomTabRequired>true</ns:CustomTabRequired>
<ns:CustomTabLocked>false</ns:CustomTabLocked>
<ns:SharedTab>false</ns:SharedTab>
</ns:Tab>
<ns:Tab>
<ns:DocumentID>32093411</ns:DocumentID>
<ns:RecipientID>45399085</ns:RecipientID>
<ns:PageNumber>1</ns:PageNumber>
<ns:XPosition>285</ns:XPosition>
<ns:YPosition>324</ns:YPosition>
<ns:Type>Custom</ns:Type>
<ns:Name>No</ns:Name>
<ns:TabLabel>Paymentmethod</ns:TabLabel>
<ns:CustomTabType>Radio</ns:CustomTabType>
<ns:CustomTabRequired>true</ns:CustomTabRequired>
<ns:CustomTabLocked>false</ns:CustomTabLocked>
</ns:Tab>
<ns:Tab>
<ns:DocumentID>32093411</ns:DocumentID>
<ns:RecipientID>45399085</ns:RecipientID>
<ns:PageNumber>1</ns:PageNumber>
<ns:XPosition>374</ns:XPosition>
<ns:YPosition>302</ns:YPosition>
<ns:ScaleValue>10.0</ns:ScaleValue>
<ns:Type>Custom</ns:Type>
<ns:TabLabel>Text 85a340b8-8159-420c-810a-76926f8c6dad</ns:TabLabel>
<ns:CustomTabType>Text</ns:CustomTabType>
<ns:CustomTabWidth>78</ns:CustomTabWidth>
<ns:CustomTabHeight>11</ns:CustomTabHeight>
<ns:CustomTabRequired>true</ns:CustomTabRequired>
<ns:CustomTabLocked>false</ns:CustomTabLocked>
<ns:CustomTabDisableAutoSize>false</ns:CustomTabDisableAutoSize>
<ns:ConditionalParentLabel>Paymentmethod</ns:ConditionalParentLabel>
<ns:ConditionalParentValue>Yes</ns:ConditionalParentValue>
<ns:Font>LucidaConsole</ns:Font>
<ns:Bold>false</ns:Bold>
<ns:Italic>false</ns:Italic>
<ns:Underline>false</ns:Underline>
<ns:FontColor>Black</ns:FontColor>
<ns:FontSize>Size9</ns:FontSize>
<ns:IncludeNoteInEmail>false</ns:IncludeNoteInEmail>
<ns:IsPaymentAmount>false</ns:IsPaymentAmount>
<ns:RoundDecimalPlaces>0</ns:RoundDecimalPlaces>
<ns:MaxLength>4000</ns:MaxLength>
<ns:RequireAll>false</ns:RequireAll>
</ns:Tab>
<ns:Tab>
<ns:DocumentID>32093411</ns:DocumentID>
<ns:RecipientID>45399085</ns:RecipientID>
<ns:PageNumber>1</ns:PageNumber>
<ns:XPosition>376</ns:XPosition>
<ns:YPosition>366</ns:YPosition>
<ns:ScaleValue>1.0</ns:ScaleValue>
<ns:Type>Custom</ns:Type>
<ns:TabLabel>Text 5928b009-b2af-4bdb-beb5-62c803fdae0b</ns:TabLabel>
<ns:CustomTabType>Text</ns:CustomTabType>
<ns:CustomTabWidth>78</ns:CustomTabWidth>
<ns:CustomTabHeight>11</ns:CustomTabHeight>
<ns:CustomTabRequired>true</ns:CustomTabRequired>
<ns:CustomTabLocked>false</ns:CustomTabLocked>
<ns:CustomTabDisableAutoSize>false</ns:CustomTabDisableAutoSize>
<ns:TemplateLocked>false</ns:TemplateLocked>
<ns:TemplateRequired>false</ns:TemplateRequired>
<ns:ConditionalParentLabel>Paymentmethod</ns:ConditionalParentLabel>
<ns:ConditionalParentValue>No</ns:ConditionalParentValue>
<ns:SharedTab>false</ns:SharedTab>
<ns:RequireInitialOnSharedTabChange>false</ns:RequireInitialOnSharedTabChange>
<ns:ConcealValueOnDocument>false</ns:ConcealValueOnDocument>
<ns:Font>LucidaConsole</ns:Font>
<ns:Bold>false</ns:Bold>
<ns:Italic>false</ns:Italic>
<ns:Underline>false</ns:Underline>
<ns:FontColor>Black</ns:FontColor>
<ns:FontSize>Size9</ns:FontSize>
<ns:IncludeNoteInEmail>false</ns:IncludeNoteInEmail>
<ns:IsPaymentAmount>false</ns:IsPaymentAmount>
<ns:RoundDecimalPlaces>0</ns:RoundDecimalPlaces>
<ns:MaxLength>4000</ns:MaxLength>
<ns:RequireAll>false</ns:RequireAll>
</ns:Tab>
</ns:Tabs>
<ns:Subject>Email Subject Radio</ns:Subject>
<ns:EmailBlurb>Email Blurb Radio</ns:EmailBlurb>
</ns:Envelope>
</ns:CreateAndSendEnvelope>
</soapenv:Body>
</soapenv:Envelope>

CopyIntoItems Sharepoint SOAP Action Parameters

I am trying to upload a file using SOAP Action
POST /_vti_bin/Copy.asmx HTTP/1.1
Host: my.hostname.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://schemas.microsoft.com/sharepoint/soap/CopyIntoItems"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CopyIntoItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<SourceUrl>string</SourceUrl>
<DestinationUrls>
<string>string</string>
<string>string</string>
</DestinationUrls>
<Fields>
<FieldInformation Type="Invalid or Integer or Text or Note or DateTime or Counter or Choice or Lookup or Boolean or Number or Currency or URL or Computed or Threading or Guid or MultiChoice or GridChoice or Calculated or File or Attachments or User or Recurrence or CrossProjectLink or ModStat or AllDayEvent or Error" DisplayName="string" InternalName="string" Id="guid" Value="string" />
<FieldInformation Type="Invalid or Integer or Text or Note or DateTime or Counter or Choice or Lookup or Boolean or Number or Currency or URL or Computed or Threading or Guid or MultiChoice or GridChoice or Calculated or File or Attachments or User or Recurrence or CrossProjectLink or ModStat or AllDayEvent or Error" DisplayName="string" InternalName="string" Id="guid" Value="string" />
</Fields>
<Stream>base64Binary</Stream>
</CopyIntoItems>
</soap:Body>
</soap:Envelope>
I wish to upload a PDF file or Doc file. I am using Firefox extension Poster
I have the source and destination URLs
What should be the values of <FieldInformation> and <Stream> ?
Thanks in advance
Viv
The stream value needs to be the base64binary representation of the file. So for example I have a text file that contains the text "123". Using this site http://www.base64converter.com/ I converted the text to base64 which translated to "MTIz". So if I was trying to upload my file I would put "MTIz" (without quotes) into the Stream tag. Something like this:
<Stream>MTIz</Stream>
The FieldInformation tags need to contain any SharePoint properties that need to be associated with the document you are uploading. So if you want to set the title property to "My Document" you would need something like this:
<FieldInformation Type="Text" DisplayName="Title" InternalName="Title" Id="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Value="My Document" />

How to Filter a DropDownList from another DropDownList (SPDataSource + ControlParameter way)

I’m trying to connect two DropDownList (ddlCountry and ddlCity) together. I want that when the user changes the Country, the ddlCity is updated consequently.
To do it, I created two lists:
· Country (ID, Title)
· City (ID, Title, Country) [Country is a lookup field]
Then I created an ASPX page with 2 DropDownList connected to Country and City through 2 SPDataSource (dsCountry and dsCity).
When I load my page, the City DropDownList is populated accordingly to the Country DropDownList, but when I change the Country, nothing happens and ddlCity shows null always
This is my code:
<SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="<Query><OrderBy><FieldRef Name='Title' /></OrderBy></Query>" id="dsCountry">
<SelectParameters>
<asp:Parameter Name="ListName" DefaultValue="Country"/>
</SelectParameters>
</SharePoint:SPDataSource>
<p>Country:
<asp:DropDownList runat="server" id="ddlCountry" DataValueField="Title" DataTextField="Title" DataSourceID="dsCountry" AutoPostBack="True" />
</p>
<SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="<Query><Where><Eq><FieldRef Name="Country" /><Value Type="Lookup">{country}</Value></Eq></Where></Query>" id="dsCity">
<SelectParameters>
<asp:parameter DefaultValue="City" Name="ListName"></asp:parameter>
<asp:controlparameter name="country" controlid="ddlCountry" propertyname="SelectedValue"/>
</SelectParameters>
</SharePoint:SPDataSource>
<p>City:
<asp:DropDownList runat="server" id="ddlCity" DataValueField="Title" DataTextField="Title" DataSourceID="dsCity" />
</p>
Please note:
· In ddlCountry AutoPostBack = True
· In dsCity, in the CAML query there’s a parameter called “country”, connected to ddlCountry through a ControlParameter
I don’t understand why my filtering doesn’t work when I change the country… I can see the page reloading, but nothing happens… any suggestion?
Shouldn't the variable be:
{$country}
Interested in knowing if you ever found a solution.
I realise this is serious thread necromancy, but in case you're still interested, or anyone else finds this through Google...
Try setting the EnableViewState attribute of the second (filtered) dropdown to false. This will force the control to get a new set of data (with the new filter) from the SPDataSource, instead of getting its previous set from before the post back from the View State.
Have a look at this page for this specific example, and this page for a more general overview of the View State and what it does.

Resources