Friday, 9 March 2012

JavaScript CEWP with Client Context

This gets the last inserted item in table TestJS which has columns ID, Title, URL.


<a href="javascript:TEST()">Click ME!</a><script type="text/javascript">


function TEST()
{
// var myQueryString = '<View/>';

var myQueryString = "<View><Query><OrderBy><FieldRef Name='Created' Ascending='False' /></OrderBy></Query><RowLimit>1</RowLimit></View>";

var myContext = new SP.ClientContext.get_current();
var myWeb = myContext.get_web();
var myList = myWeb.get_lists().getByTitle('TestJS');
var myQuery = new SP.CamlQuery();
myQuery.set_viewXml(myQueryString);
myItems = myList.getItems(myQuery);

myContext.load(myItems,'Include(ID, Title, URL)');

myContext.executeQueryAsync(Function.createDelegate(this, TestSuccess), null);

}

function TestSuccess(sender,args)
{
var county = myItems.get_count();

var tEnumerator = myItems.getEnumerator();


var tDetails = '';

var currentEnum;
while(tEnumerator.moveNext())
{
currentEnum = tEnumerator.get_current();
tDetails = tDetails + ' ' + currentEnum.get_item('Title')
+ ' ' + currentEnum.get_item('URL');

}


alert("Query Result: " + tDetails);

alert("Last value: " + currentEnum.get_item('URL'));

}</script>


Thursday, 8 March 2012

Outer Join with Linq SharePoint 2010

With help from http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/15/my-500th-post-left-outer-joins-with-linq.aspx, this is my outer join linq



var outerX = from cust in dataContext.Customers.ToList()
join ord in dataContext.Orders.ToList()
on cust.CustomerID.ToString().Trim()
equals ord.CustomerID.CustomerID.ToString().Trim()
into CustomerInformationGroup
from item in CustomerInformationGroup.DefaultIfEmpty(
new OrdersItem { Title="-",OrderID=0,OrderDate=DateTime.Now,Quantity=0,ProductID=new ProductsItem(),CustomerID=new CustomersItem()})
select new
{
CustomerID = cust.CustomerID,
Title = cust.Title,
City = cust.City,
CustomerCountry = cust.CustomerCountry,
JoiningDate = cust.JoiningDate,
OrderTitle = item.Title
};

dataGrdCustomer.DataSource = outerX.ToList();
dataGrdCustomer.Columns.Clear();

DataGridViewTextBoxColumn custName = new DataGridViewTextBoxColumn();
custName.DataPropertyName = "Title";
custName.Name = "Title";
custName.HeaderText = "Name";

dataGrdCustomer.Columns.Add(custName);

DataGridViewTextBoxColumn custID = new DataGridViewTextBoxColumn();
custID.DataPropertyName = "CustomerID";
custID.Name = "CustomerID";
custID.HeaderText = "CustomerID";
dataGrdCustomer.Columns.Add(custID);

DataGridViewTextBoxColumn custCity = new DataGridViewTextBoxColumn();
custCity.DataPropertyName = "City";
custCity.Name = "City";
custCity.HeaderText = "City";
dataGrdCustomer.Columns.Add(custCity);

DataGridViewTextBoxColumn custCountry = new DataGridViewTextBoxColumn();
custCountry.DataPropertyName = "CustomerCountry";
custCountry.Name = "CustomerCountry";
custCountry.HeaderText = "Country";
dataGrdCustomer.Columns.Add(custCountry);

DataGridViewTextBoxColumn prodTitle = new DataGridViewTextBoxColumn();
prodTitle.DataPropertyName = "OrderTitle";
prodTitle.Name = "OrderTitle";
prodTitle.HeaderText = "OrderTitle";
dataGrdCustomer.Columns.Add(prodTitle);


Here's the output table,

Inner join with LINQ in SharePoint 2010



var x = from cust in dataContext.Customers.ToList()
join ord in dataContext.Orders.ToList()
on cust.CustomerID.ToString().Trim() equals
ord.CustomerID.CustomerID.ToString().Trim()
select new
{
CustomerID = cust.CustomerID,
Title = cust.Title,
City = cust.City,
CustomerCountry = cust.CustomerCountry,
JoiningDate = cust.JoiningDate,
OrderTitle = ord.Title
};
dataGrdCustomer.DataSource = x.ToList();

Tuesday, 6 March 2012

Caml Query Client Object

I was wondering why the list query returns ALL of my list when the reason was that I have left out the <Query> tag! This is the working version...




SP.List oList = context.Web.Lists.GetByTitle("Projects");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "" + projectCode + "";
ListItemCollection collListItem = oList.GetItems(camlQuery);
context.Load(collListItem);
context.ExecuteQuery();