I ended up using a WebReference, this is how I did it:
I created one web reference from SiteFromFarm2.com of Farm2 in the WebPart that is sitting on SiteFromFarm1.com on Farm1:
http://SiteFromFarm2.com/_vti_bin/lists.asmx
Instantiate the web reference:
Farm2WebReference.Lists listService = new Farm2WebReference.Lists();
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
Used Query option to get desired data, like this:
XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
ndQuery.InnerXml = "<Where><Gt><FieldRef Name='Created'/><Value Type='DateTime'>2012-01-01T00:00:00</Value></Gt></Where>" +
"<OrderBy> <FieldRef Name='Created' Ascending='FALSE' /> </OrderBy>";
XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
ndViewFields.InnerXml = "<FieldRef Name='Field1' /> <FieldRef Name='Field2' /> <FieldRef Name='Created' />";
XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
ndQueryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" + "<DateInUtc>TRUE</DateInUtc>";
XmlNode ndListItems = listService.GetListItems("Library Name", null, ndQuery, ndViewFields, 10, ndQueryOptions, null);
XmlTextReader xtr = new XmlTextReader(ndListItems.OuterXml, XmlNodeType.Element, null);
DataSet taskDataSet = new DataSet();
taskDataSet.ReadXml(xtr);
if (taskDataSet != null && taskDataSet.Tables.Count > 1)
{
HyperLinkField link = (HyperLinkField)SearchResultsSPGridView.Columns[1];
// you can use one or more fields, as per your requirement. My desired files are in separate folders in this library, so I had to use multiple data navigate url fields
link.DataNavigateUrlFields = new string[] { "Field1", "Field2" };
link.DataNavigateUrlFormatString = String.Format("{0}{1}{2}{3}", "http://SiteFromFarm2.com/Forms/", "{0}", "/WebPageName.aspx?ID=","{1}");
SearchResultsSPGridView.DataSource = taskDataSet.Tables[1];
SearchResultsSPGridView.DataBind();
}
Thanks for your suggestion Dave,
Krishna Acharya
P.S. Both farms use SharePoint 2010