Feed Icon  

Contact

  • Bryant Likes
  • Send mail to the author(s) E-mail
  • twitter
  • View Bryant Likes's profile on LinkedIn
  • del.icio.us
Get Microsoft Silverlight
by clicking "Install Microsoft Silverlight" you accept the
Silverlight license agreement

Hosting By

Hot Topics

Tags

Open Source Projects

Archives

Ads

Previous Page Page 3 of 7 in the SharePoint category(RSS) Next Page

Bill Gates on SharePoint and Infopath

Posted in SharePoint at Wednesday, February 9, 2005 6:56 AM Pacific Standard Time

Mark Bower notes:

Gates went on to add more detail: InfoPath ‘with rich controls, on top of the Avalon runtime’, but also with the ability to ‘project onto classic HTML’.  So InfoPath is likely to evolve into a Forms package that can target thin-client HTML delivery and rich client Avalon delivery.  Look forward to it.

I watched the keynote as well and I thought Bill's response on this “it has taken us awhile to get forms right” was interesting. I didn't pick up on the Infopath connection like Mark did which is an interesting take. A good forms package with thin and rich client delivery would be a good thing. The other interesting thing that stood out to me was that Bill likes SharePoint as noted by Mark Muller:

He also mentioned that he was a big fan of Sharepoint 2003 and the solutions build around it. According to him, Sharepoint provides a foundation for Office applications and system integration. Good to hear this from him ;). Seems like Sharepoint developers won't have to fear to get bored.

For some reason I have this idea in my head that something was said about WinFS and SharePoint merging, but I don't remember if I heard it directly in the keynote or if I just munged some ideas together from all the blogs I read. Anyhow, the keynote is worth watching (hopefully they will post it up in the webcast archive).

 

SharePoint, Reporting Services, and Firefox

Posted in Reporting Services | SharePoint | General at Monday, February 7, 2005 4:46 AM Pacific Standard Time

Mads created a GotDotNet workspace for tracking issues with SharePoint and non-IE browsers. I installed Firefox some time ago but but it aside since I didn't appear to do NTLM authentication which is needed for SharePoint access. One of the first posts in the form there is TIP: Use current Windows credentials in Firefox (warning: we are talking about GotDotNet so the link to the post may be unusable about 50% of the time while the GotDotNet crew does some “maintenance“). The tip explains how to enable NTLM in Firefox. However, it didn't work for me and after some googling I found this post which adds another setting to the mix but didn't solve the problem for me either. Turns out I had to add the server names to the bypass proxy list for it to work.

SharePoint seems to work except for ActiveX controls, which I see Mads already posted about. The most interesting thing to me though was checking out Reporting Services from Firefox which is pretty much unusable. Very ugly. I will have to look into seeing if I can make them work using the RsWebParts (which I'm still working on version 1.2 (parameters are a pain)).

Page.RegisterStartupScript

Posted in Reporting Services | SharePoint | ASP.Net/Web Services at Thursday, February 3, 2005 3:46 AM Pacific Standard Time

Note to self:

The Page.RegisterStartupScript just outputs the text you pass to the method and doesn't add script tags. If you don't add script tags your text will be output at the bottom of every page (which is embarrassing). Why can't I remember this....

P.S. - In case you were wondering, I just discovered this is a bug in the RsWebParts version 1.1 which will be fixed in 1.2.

P.S.S. - I hear this is “fixed” in ASP.Net 2.0...

Rendering Regret

Posted in Reporting Services | SharePoint at Tuesday, February 1, 2005 2:42 AM Pacific Standard Time

From Barry's Blog via Serge van den Oever on RenderWebPart:

When things go the way you expect, you want to render an entire batch of HTML. However, you don't want to render any of that HTML in the case of an exception when the logic in your Web Part determines that it should display an error message instead. Things can really get ugly if you render the opening tags for an HTML table and do not properly close them due to an exception. This can upset the high-level rendering logic of the page as well as other Web Parts.

The solution to this problem is to use some technique that allows you to write HTML into a buffer and then send it all in a single batch once you know that all the rendering logic has executed successfully. You can create a string buffer using an instance of the System.Text.StringBuffer class. You can then create an instance of the HtmlTextWriter class and use that to render HTML into the buffer.

Barry then gives some code that will allow you to buffer your HTML output which lets you manage your exceptions gracefully. I liked the idea so much that I've already added it to the latest version of the RsWebParts (version 1.2 which I'm still trying to tidy up for release on sf.net). Since the RsWebParts all inherit from the RsBasePart I simply did this:

        /// 
        /// Renders the HTML contents of the webpart. 
        /// The base webparts calls this and buffers the output in order to 
        /// prevent the webpart causing the SharePoint page to fail. This code
        /// was take from Barry's Blog (http://www.barracuda.net/barrysblog.aspx?Date=10/22/2004)
        /// 
        /// HtmlTextWriter to writer content with.
        protected override void RenderWebPart(HtmlTextWriter output) 
        { 
            // create buffer for output 
            StringBuilder buffer = new StringBuilder(10240);
            StringWriter InnerWriter = new StringWriter(buffer);
            HtmlTextWriter BufferWriter = new HtmlTextWriter(InnerWriter); 
            try 
            { 
                // call method to write HTML to buffer
                WriteWebPartContent(BufferWriter);
                // write HTML btach back to browser
                output.Write(buffer);
            }
            catch(Exception ex) 
            { 
                output.Write("Web Part Error: " + ex.Message); 
            } 
        }
        /// 
        /// The webpart must call this method to render its content instead of
        /// overriding RenderWebPart.
        /// 
        /// HtmlTextWriter to writer content with.
        protected abstract void WriteWebPartContent(HtmlTextWriter output);

Next I just renamed the RenderWebPart methods of each web part to WriteWebPartContent and now I have buffered output! Very cool.

Barry has some other great articles on his blog and his company offers SharePoint training. My boss and one of my coworkers took the class and both learned quite a bit (I didn't take the class because I'm not really the SharePoint admin, just a web part developer).

RsWebParts Update

Posted in Reporting Services | SharePoint at Friday, January 28, 2005 7:42 AM Pacific Standard Time

Ok, I've created a new project site at SourceForge.net which you can find here. Everytime I try to figure out the CVS stuff I end up feeling dumb because I can't figure it out. So hopefully I'll “get it” this weekend so that I can put some files up there. For now the project site is just an empty shell.

In the meantime I would really like to figure out this reported bug about a security issue with the web parts. I'm not really sure if I understand what the problem is but I don't think it is really an issue with the web parts but rather a configuration issue.

The reason I think it is a configuration issue is because the main web part (the report viewer) is basically just an iframe that loads a report services report. The machine that I test my web parts on  is a different machine than the reporting services server so that shouldn't be an issue. I'm just wondering if the problem is that the user viewing the web parts doesn't have access to the reporting server. But I don't really know so let's talk more about this problem either here in the comments or in the forms.

While we're at it, please post any other bugs you've run into at the project site.

Reporting Services WebParts Space Heats Up

Posted in Reporting Services | SharePoint at Monday, January 24, 2005 2:17 AM Pacific Standard Time

I haven't done much with the RsWebParts for since I released the last beta version (sorry if you've sent me email or posted questions in the comments, I've been too busy), but it looks like they are getting some more attention with the release of Reporting Services SP2 beta.

One thing that seems to have gone unnoticed is that the new version of BI Portal has been released [via Duncan and Patrick]. What does BIP have to do with Reporting Services WebParts? Well the BIP viewer can view Reporting Services Reports (and the BIP Viewer is a WebPart). It also has a Report Browser. In fact, the BIP viewer was the inspiration for the RsWebParts and you will even see that I borrowed some of my client side scripting from the BIP viewer.

So now there are 4 Reporting Services WebPart Packages (that I know of) so it will be intereting to see what happens next. I would expect the MS WebParts to come out on top unless they don't provide the functionality that people need. I would really like to continue working on the RsWebParts or at least get it out as an open source community project (especially since GotDotNet is so pathetic, right now the workspaces are down and there is no message explaining why or when things will be back).

What would you suggest? Should I create some kind of open source project for the SharePoint/Reporting Services community to extend? If so, how should I go about this?

 

 

ASPX Pages Without a Form

Posted in SharePoint | ASP.Net/Web Services at Thursday, January 6, 2005 9:34 AM Pacific Standard Time

One of my recent projects was to develop a new menu system for our SharePoint portal to replace our old menu system (which was a custom menu as well). I decided to create an ASP.Net server control to do this. I created my control, signed it, deployed it to the GAC, added it to the safe control list, and then our web master put it into production after we did some basic testing. So far, so good.

However, today our web guy hit a snag when he put the menu on the SharePoint administrator pages (located in the  layouts/1033 folder). When the menu was put into these pages the menu would display but the scripting didn't work. I looked into the problem and quickly realized that my client side script was not being rendered into the page, basically my RegisterClientScriptBlock calls were being ignored (or so it seemed).

After some doing some googling and running some tests I finally realized that the SharePoint admin pages have no form tags (mark this down as YASPQ). So the problem I was running into was that since there were no form tags, the client side script blocks were not rendered as decribed here:

Server controls that post back or use client-side script will not work if they are not enclosed in the HtmlForm server control ( ). These controls can call this method when they render to provide a clear error message when they are not enclosed in the HtmlForm control.

The method referred to here is Page.VerifyRenderingInServerForm. I could call this method in the Render method of my menu control, but this just throws an HttpException (which in this case is clearly not beneficial). Instead of allowing the exception to bubble up I simply trapped for the exception and if it was thrown I added an HtmlForm control to my menu's controls collection and then rendered it after my menu was built.

This allowed the client script to be rendered even if the form tag was missing. So if you're developing a control and run into this problem this is a quick work-a-round. If your control has other controls that need to be posted back you could add them as child controls to the HtmlForm control and it should work as expected.

YASPQ

Posted in SharePoint at Wednesday, January 5, 2005 7:03 AM Pacific Standard Time

Scott posted a cool trick to map a WebDAV or FontPage website to a drive letter. Since I do a lot of SharePoint work I immediately started thinking of all the cool things I could do with this once I had a folder mapping to my SharePoint portal site (like start using VisualStudio to edit pages, easy backup, etc.). However, I was disappointed that it didn't seem to work with SharePoint. YASPQ!*

* Yet Another SharePoint Quirk

Test Driven SmartPart Development

Posted in SharePoint | ASP.Net/Web Services | Test-Driven Dev at Wednesday, December 8, 2004 3:02 AM Pacific Standard Time

A couple of weeks ago Jan Tielens released the SmartPart version 1.0.0.0. The SmartPart is a very cool WebPart that will host ASP.Net user controls in a SharePoint environment. This means you can use Visual Studio to edit the user controls and use the WYSIWYG editor instead of building the HTML via code. Additionally, Maxim Karpov helped out with the CAS aspect of the SmartPart which can be a confusing topic if you're not Maxim. Maxim does a great job of explaining the CAS issues and even though I've worked with CAS for things like custom code in reporting services, I still feel it is something foriegn (I think CAS knowledge seeps out of the brain).

So the SmartPart allows you do quickly create SharePoint WebParts and you can even debug those WebParts in a normal ASP.Net application, but what about using Test Driven Development (TDD)?

Well Scott Hanselman gave me an idea that I thought would be worth trying out. Scott detailed how to use TDD for normal ASP.Net development using Cassini, an idea I found to be very cool. So could I use the same technique to use TDD for SmartParts? The answer is you can.

First I created a SmartPart project to build my sample SmartPart. To do this I used a regular class library project since this will give me everything I need without having to use a web server. You will need to add references to System.Web, Microsoft.SharePoint, and SmartPart. For my simple SmartPart I created one ASCX file and one CS file. In my user control I added a Label and in the Page_Load event handler I set the Text property to “This is a simple smart part.”.

The next step is to create your testing project. Again I created a class library project and this time added references to the Cassini (using the cassini.dll) and NUnit.Framework (I'm using NUnit 2.2). I had to make some modifications to Scott's code in order to make things work since my approach is slightly different. He is testing ASPX pages while I'm testing a user control that needs to be loaded in an ASPX page.

The first test was just to start the cassini server and open an ASPX page that had no control to make sure everything worked. That was fairly easy thanks to Scott. The next step was a little more involved since I had to copy the user control and the dll from my other project and reference the ASCX in the ASPX page. However, after some trial and error I got that working as well. The real fun came when I went to set the SPWeb property of my SmartPart as shown by Jan in his debugging post.

The SPGlobalAdmin class requires the Microsoft.SharePointLibrary.dll in order to function (which exists only in the GAC) [Update: I made a change here since I made a mistake in the original post. The SPGlobalAdmin is in the Microsoft.SharePoint.Administration namespace, not library.]. I remembered seeing a post about how to extract this from the GAC so after a little googling I came across this example which allowed me to extract the dll and add it to the bin folder of my cassini project. Once I had this dll accessible to cassini things started to work except for a security exception: Failure decoding embedded permission set object. Hmmm.

This one kept me baffled for quite some time until I got the bright idea this morning (after reading some of Maxim's CAS articles again) to take a look at the constructor for the SPGlobalAdmin class using Reflector. Using Reflector I noticed that the contructor demanded the permission Microsoft.SharePoint.Security.SharePointPermission. Ahhh. So back to the GAC again to get Microsoft.SharePoint.Security.dll.

Once I had that everything worked. All my tests passed and I'm able to start developing my SmartParts using TDD. Now I'm off to see if I can figure out how to test creating and using connections. If people are interested I can write a short article with the code I used to do this.

Update: I ended up running into issues when setting the SPWeb property. I was able to get the SPGlobalAdmin but nothing past that. But at this point I'm not sure how much that matters. I did get some very simple connections working just by using Part1.SetConsumerData(Part2.GetProviderData()).

Wow...

Posted in Sql and Xml | SharePoint | General at Tuesday, November 30, 2004 2:14 AM Pacific Standard Time

That is all I can say, wow.

This is the coolest thing I've seen in a long time. A zero footprint cube browser that is built using Adomd.net and ASP.net. I've been looking for this for a long time. But not only is it everything I've wanted, it is free and you can download the source.

My next project will be to convert this into a web part for SharePoint and add save state. Then life will be good and I will drop the Office Web Components (and all the problems we've had with them).

Thanks to Mosha Pasumansky for linking to this and to Duncan Lamb for linking to Mosha. (In case you don't do much with Analysis Services, Mosha is the development lead on the AS engine team and is the MDX/OLAP/AS guru (see his website and books)). I'm now subscribed to Mosha's blog and already learning quite a bit...

Previous Page Page 3 of 7 in the SharePoint category(RSS) Next Page