You are hereIT
IT
Add choices to Sharepoint Multi-Choice Field
Setting field values of a list item in SharePoint is easy. But when it comes to Multi-Choice fields, the code is a big different. The following code shows how values can be added to a multi-choice field.
SPFieldMultiChoice choiceField = (SPFieldMultiChoice)myWeb.Fields["choiceFieldName"];choiceField.Choices.Add("Value");//Set PushChangesToLists to true if automatic update of List or Content types is requiredchoiceField.PushChangesToLists = false; choiceField.Upate();
Use CAML Query to Read Data from lists or Libraries
One way to read the data from a list or a library is to iterate through it using the items collection of the list or library. But this is not the most efficient way to do it, specially if only few items are needed from this list.
Enter CAML Queries.
The following is the example query
<Where>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">title</Value>
</Eq>
</Where>
One thing to note in the CAML Query is that there is <query> start and end tag. It is required that the query string does not have starting and ending <query> tag, otherwise the SPQuery will always return a empty dataset.
And here is the code:
SPList mylist = web.Lists["MyList"];SPQuery spQuery = new SPQuery();spQuery.Query = "" //CAML Query String;
SPListItemCollection queryitems = mylist.GetItems(spQuery);
That is it, as simple as that.
There as a great tool to build CAML Queries at http://www.u2u.info/SharePoint/U2U%20Community%20Tools/Forms/AllItems.aspx called U2U Caml Query Builder. It is worth checking this tool out.
Create a SharePoint Content Type programmatically
Sometimes it is necessary to create a Sharepoint Content Type by code, specially when batch creating content types. The following code snippet shows how a sharepoint content type can be created in C#. I have also included some not-so-simple field types like choice and lookup.
using (SPSite p_site = new SPSite(urlToSite))
{ using (SPWeb p_web = p_site.OpenWeb()) { SPContentType CustomContentType = new SPContentType(p_web.AvailableContentTypes["ParentContentType"], p_web.ContentTypes, "MyContentType"); // A string Field p_web.Fields.Add("NumberColumn", SPFieldType.Number);SPFieldLink fLink1 = new SPFieldLink(p_web.Fields["NumberColumn"]);
CustomContentType.FieldLinks.Add(fLink1);
// A required number fieldp_web.Fields.Add("StringColumn", SPFieldType.Text, true);
SPFieldLink fLink2 = new SPFieldLink(p_web.Fields["StringColumn"]);
CustomContentType.FieldLinks.Add(fLink2);
//A Choice Fieldp_web.Fields.Add("ChoiceColumn", SPFieldType.Choice, false);
SPFieldChoice choicefield = (SPFieldChoice)p_web.Fields["ChoiceColumn"]; // Add a group to the filed choicefield.Group = "MyGroup"; // Add choices choicefield.Choices.Add(string.Empty); choicefield.Choices.Add("Yes"); choicefield.Choices.Add("No"); // Set the default choice choicefield.DefaultValue = string.Empty;choicefield.Update();
SPFieldLink fLink3 = new SPFieldLink(choicefield);CustomContentType.FieldLinks.Add(fLink3);
p_web.Fields.Add("LookupColumn", SPFieldType.Lookup, false);
SPFieldLookup lookupfield = (SPFieldLookup)p_web.Fields["LookupColumn"]; // Set the remote lookup listlookupfield.LookupList = new Guid("guidofremotelist");
// Set the remote field lookupfield.LookupField = "remotefieldname";lookupfield.Update();
SPFieldLink fLink4 = new SPFieldLink(lookupfield);CustomContentType.FieldLinks.Add(fLink4);
CustomContentType.Update();
}
}
Sharepoint Delay Activity Timer
Sharepoint Delay Activity is rounded off to the minute interval that is setup for 'job-workflow' property. This is because the job is responsible for waking up the workflow at the specified time. This job is usually set to run every 5 minutes.
It is easy to change (increase or decrease) this value.
To get the current job interval value: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN\stsadm -o getproperty -pn job-workflow -url http://siteaddress
Or to change it every minute
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN\stsadm -o setproperty -pn job-immediate-alerts -url http://siteaddress -pv "every 1 minutes between 0 and 59"
Just be careful about this on production server, as it would create extra load if set to 1 minute interval.
Blast from the Past !!!
I just discovered that 3D Releams open sourced the classic Duke Nukem 3D a few years back. That means windows ports for the old classic !! Damn its looks good !! Being fickle minded, I hardly stick on to one game. But Duke Nukem was and is probably the only game I played for extended period of time (On my old P60 hehehe ).
I tried google and wow, I found the home of jduke3d a windows port of the game. The game is completly playable on my Win 2003 laptop. And then I found the Icing on the Cake - A hi-def mod for the game. So now I can play it at full resolution, with sharp hi-res graphics. This was fun. Played for an hour or so, and boy does that bring back old memories.
Lets see if I can get enough time to finish the game one more time. To be frank, after playing all new games, duke nukem kinda feels too easy. I guess I am missing the AI of new games. But then Duke Nukem is Duke Nukem.