How to make DynaTree nodes expand only on clicking the arrows at the corners


In DynaTree sometimes you may want the nodes to not expand when yo click on them –  usually it expands it whether you click on the arrow at the corner or anywhere on the entire node text – so if you don’t want that behavior you need to initialize the tree with clickFolderMode: 1 and that’s it!

For details of how to initialize the DynaTree, check out the sample code in section 4.1 in DynaTree Documentation

Advertisements

Where/How do we place/refer to images in SharePoint 2010 WebParts


Where are the images located in SharePoint project or webpart
The location of images in SharePoint 2010 Project/web part

This one is especially useful for the new bie because when you start with building webparts for SharePoint 2010, you often come to a point where you wanna add a URL somewhere, lets say programatically or in the CSS or may be in the ASCX code and you wonder, hey wait a minute where are the images for SharePoint placed anyway? How do I refer to them? So here’s your answer.

What you do is that you Right Click the Web parts project > Add > SharePoint “Images” Mapped Folder option. Doing that will give you an images folder inside your project directory and you can refer to that like this:

“~/_layouts/Images/ProjectNamesETC/xyz.png”

Have fun!

SPGridView’s OnRowDataBound event returning nulls – Unable to FindControls


Earlier today I was just playing around with SharePoint 2010 and thought I should do a simple task with SPGridView, that is to display the data and show an appropriate image in the “Status” column instead of the text. Hmm, sounds quite simple doesn’t it! But no, it turned into a misery. Well, when I started it was quite natural to use the OnRowDataBound event on that to capture the data and do some modifications with the controls (I was using TemplateFields in the SPGridView by the way), so I did that and I tried  doing things like e.Row.FindControl(“xyz”), e.Row.Cells[2] and using RowIndex property which was returning -1 where e refers to an object of GridViewRowEventArgs and there was nothing to get over there. It was nulls all around!

So here’s a sample of the code in the visual webpart that I was writing:-

<SharePoint:SPGridView ID=”spGvWorkOrders”  runat=”server” >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID=”lbl_workOrderId” Text='<% # Bind(“Id”) %>’  runat=”server”></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
<ItemTemplate>
<asp:Label ID=”lbl_workOrderTitle”  runat=”server” Text='<% # Bind(“Title”) %>’ ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>

<asp:Image ID=”img_status” Width=”10px” ImageUrl='<% #StatusToImage(“\””+ Eval(“Status”)+”\””) %>’ runat=”server” />
</ItemTemplate>
</asp:TemplateField>

And here is the function:-

protected string StatusToImage(string status)
{
if ( ( rowcount++ % 2) == 0)
return “~/_layouts/Images/WorkOrders/add.png”;
else
return “~/_layouts/Images/WorkOrders/arrow_up_green.png”;
}

Notice that I had been using the Bind function earlier but when I tried using it to send the value to StatusToImage function it did not work. Eval is the better option anyway in case you’re just interesting in displaying the data.

So what I did was that instead of using the event I just put the function call inside the ascx code so that whenever a row is created that function is called with the value of Status from the Data Source and with that value sent to a function, we can return back a string to give the path to the image file. The syntax however, is quite tricky and it took me a while to figure that out correctly but it worked in the end. Hope it will save you some time though!

Assignment List Web Part generates an error during configuration of SharePoint Learning Kit


Well, I started working with the SharePoint Learning Kit (SLK) 1.4 in MOSS 2007 and I was following the GettingStarted.pdf document that accompanies the package. So on Page 10 where you’re supposed to add the SLK Assignment List Web Part to a site, as I followed the instruction the site would not show anything, then I went back to the Site Actions –> Site Setting –> Web Parts and clicked on the AssignmentListWebPart.webpart. It showed the following message

“An error occurred. More information may be available in the server event log.”

Now it is important to note that the logs being referred to here are NOT the ones at C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\LOGS because these are the WSS logs.

The logs you need to see are the ones in the Administrative Tools –> Events Viewer. So when I checked that it said

SharePoint Learning Kit Error
System.Data.SqlClient.SqlException: Cannot open database “SharePointLearningKit” requested by the login. The login failed.Login failed for user ‘NT AUTHORITY\NETWORK SERVICE’.

So now I knew that all I need to do is to grant access to the SharePointLearningKit database to the user NT AUTHORITY\NETWORK SERVICE and to do that just fire up SQL Server Management Studio, go to Security node –>Logins –> right click NT Authority\Network Service –> Properties –> User Mappings –> check the database SharePointLearningKit and simply check the db_owner  role for it to give it maximum access for the time being –> Press the OK button and you should be able to see the Web Part now!

How to change the Internet Zone security level from High to Medium-Low in Windows Server 2008


Server Manager in Windows 2008
Figure 1 - Where is the Enhanced Security Configuration for Internet Explorer in Windows Server 2008 - Server Manager

Ever tried testing your application on Internet Explorer in a Windows Server environment and noticed that you just can’t browse like you do normally. In short, its “a pain in the ass”! (pardon my French) because IE just keeps buging you at every single URL that you enter – and not just once… but 3-4 times for a single website. And in order to see the looks of that website, you have to keep adding in the “trusted zone” in the dialog box that appears all the time! But anyway, enough of this whining now, lets get down to some business.

Well, today I was really determined to stop all those nonsensical security alerts so first I went to where common sense leads you to – Yeah you’re right, I went to the Internet Options –> Security Tab –> Internet Zone to turn down the security level. But when you go there, it appears disabled (grayed-out), so obviously you can’t change that like the way you’d usually expect! (Wonder why Microsoft did it that way?!?! But anyway…)

Lowering Internet Zone security level in Windows Server 2008
Figure 2 - Internet Explorer Enhanced Security Configuration

So going to the good ol’ Google for help and reading a document on Microsoft, I cam to know that all you need to do, is to fire up Server Manager (usually it sits in the  Quick Launch bar but you can also go to Control Panel –> hit Classic view –> Programs and Features –> Turn Windows features on or off). Once you’re there, you’d see the screen similar to Figure 1 above. In that  just hit the link Configure IE ESC. Next up, you’d see the screen in figure 2 on the right. Just turn the IE Enhanced Security Configuration (IE ESC) off for the administrators. It is recommended however, that you do turn it back on when you put the server into production. After you’re done with that you can go back to Internet Explorer –> Internet Options –> Security tab –>Internet zone and bring it down to medium-low. Now you can browse as usual.

I hope you find this post useful although it seems like a very trivial issue yet its quite annoying when you’re in a hurry or something.

So keep the feedback coming in, I’d be more than
happy to hear from ya!

 

 

 

Unknown server tag ‘asp:ScriptManager’ After having AjaxControlToolkit.dll referenced


Yesterday I was working on a project which had the AJAX Extensions in use. It’s primarily a .NET 2.0 application and I had .NET Framework 3.5 SP 1 installed on my system. It was working normally and all of a sudden I got this error that: Unknown server tag ‘asp:ScriptManager’

It was strange because every thing was working and I had the reference to the AjaxControlToolkit.dll.

I found out that by adding the section below to the <system.web> node in the web.config solves the problem:-
<pages>

<controls>

<add tagPrefix=”asp” namespace=”System.Web.UI” assembly=”System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ />

</controls>

</pages>

Useful Regular Expression for a UserName


^[a-zA-Z0-9_\.\-]+$

Allows only Alphanumeric characters with a period(.), Underscore(_) and a Hyphen (-). No spaces or other characters allowed.