David 的个人资料David L Walker.com照片日志列表 工具 帮助

David L Walker.com

Microsoft Application Developer Consultant (ADC)
9月11日

Many quick updates and first XSLT sample for SharePoint – Event Management System

Okay. Life has been rolling so very fast lately. Here are a few quick updates to as quickly as possible keep everyone updated:

Jan 24, 2009 – Second annual - HoustonTechFest – Presented “Building Powerful WebParts with SharePoint 2007” and “WCF for the REST of us”! Awesome audience participation!

Feb 7, 2009 – Presented at the first annual SharePoint Saturday KC - “Building Powerful WebParts with SharePoint 2007”. Becky Isserman and team did an awesome job! Attended some awesome presentations. Had some great BBQ with Daniel Larson!

March 1-5, 2009 – MVP Summit 09! Totally awesome. Got to see the Gu (Scott Guthrie) and hang out with a bunch of the SharePoint MVPs!

March 28, 2009 – Second annual School of Dev / first time to join with SharePoint Saturday! – about 87 people braved the weather reports to attend. It was just rain! Then 9am to 3pm had about 6+ inches of snow drop and stop. Within 24 hours 99.9% was all melted. Presented “Building Powerful WebParts with SharePoint 2007” and “Knowledge (Social) Networking for the Enterprise”

April 16, 2009 – White paper I wrote for Quest.com was republished on to the home page as a Popular Article on SSWUG.org – SQL Server and SharePoint – The More You Know, The Better Off You Are (if you are a paid member you can read it here.)

April 18, 2009 – St Louis MOSS Camp! Had a great time presenting – “Building Powerful WebParts with SharePoint 2007“ and attending the other sessions. Becky Isserman and Scott Spradlin talked me into playing Rock band with spoons for drum sticks, didn’t do too bad. LOL

April 25, 2009 – NWACodeCamp – awesome job! Especially for their first event! “Presented Building Powerful WebParts with SharePoint 2007”.

May 28, 2009 – Baby # 5 – Kadison Zoey-Mae Walker born, thanks to my beautiful wife!

 Kadison Zoey-Mae Walker, born March 28, 2009

June 1, 2009 – Two year term as Vice President of the INETA NORAM Speakers Bureau ended.

June 22, 2009 – 1st day at Microsoft as a ADC (Application Developer Consultant) – in Dallas at Las Colinas office for New Employee Orientation, after hours - attended DFW SharePoint group that night and saw Ted Pattison!

June 23, 2009 – Day 2 at Microsoft, after hours – attended Dallas ASP .NET User Group where Dr. Tobias Komischke, Director of User Experience @ Infragistics presented.

June 29, 2009 – Turned over Tulsa Developers .NET user group to the very capable Vice-President Sean Whitesell and the other groups to their respective leaders as well.

July 2, 2009 – My beautiful bride and I celebrated our 15th wedding anniversary

July 27-31, 2009 – TechReady 9 in Seattle. I thought the MVP Summit was huge. Wow. Amazing time, learned a lot, and met a lot of new people. Plus, folks I haven’t seen in awhile – Zewei Song, Michael Wiley, Steve Walker.. and lots of new friends!

Okay.. whew. There’s a whole lot more in there as well, between the monthly TulsaDevelopers.NET, Tulsa SQL Server Group, Tulsa SharePoint Interest Group and Tulsa Java Developers Group that I was involved with every month until recently due to my commute and some new NWASQL Server User Group meetings at lunch. But, my “quick” update has turned into a lot more.

Now… finally on to the code!

For those of you that haven’t seen my “Building Powerful WebParts for SharePoint 2007” session, I totally love writing code and utilizing SharePoint as an application development platform. But, it took several years and practically hundreds of contacts to find a hosting company able and generous enough to donate/sponsor a virtual server for the TulsaTechFest.com web site and for the Tulsa User Groups I am involved with.

Due to timing, I had to build out the site last year so quickly that I took the opportunity to explore the functionality of SharePoint Designer 2007 for the first time.

I utilized it to enable friendly url’s in SharePoint (can anyone say /Pages)? yuck!

I copied the 2008 content as a Site Template to kick start the 2009 site. But that left a lot of extra data, so I just recently added an “Active” Yes/No checkbox to the Speakers List. That’s one thing I’ve learned over the last 4 years of running large events, the agenda is bound to change up to the last minute.

Starting with Visual Studio 2008, it offered the excellent ability to debug XSLT! I took advantage of that, to deliver a no-code solution for the Event Management, by parsing the SharePoint List RSS feed utilizing XSLT. The default RSS feed is kind of gnarly to work with, but I’ve managed to work around it. (See my WSS_LIST_RSS_FIELDS.xsl distributed as part of my PowerQueryWebPart CodePlex project for a great reusable parser.)

Ironically, when I first added the Active filter to the xsl:for-each statement the xsl:sort quit sorting by the SortOrder number column. Very strange. Open in Visual Studio 2010 Beta 1, same results. Sleep on it. Deploy today, so I could share with the world and get some others input and boom – it works!

For some reason Visual Studio 2008 isn’t showing the Debug XSLT option every so often. Visual Studio 2010 Beta 1 is showing it with no issues. Reopened it and reran the Debug XSLT option and boom – working every time now. Very strange. I’ll chalk both issues up to Visual Studio 2010 Beta 1 testing. All working great now.

So, simply create a Speakers list with the following columns: Title (FirstName LastName), Bio, Link, Company, Tagline, SortOrder (Number), Active (Yes/No) and you’re ready to role!

I have a SiteImages Picture Library with a sub folder called Speakers where the images are stored: Title(spaces replaced with __).jpg.

The following XSLT shows a 3 column right rail for speakers filtered by Active flag, sorted by SortOrder, Title

<xsl:transform  version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
                exclude-result-prefixes="xsl xs" xmlns:ddwrt2="urn:frontpage:internal">
    <xsl:output method="html"/>

    <xsl:template match="rss/channel" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime">
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td>
                    <xsl:for-each select="item[substring-before(substring-after(description, 'Active:&lt;/b&gt;'), '&lt;/div&gt;')=' Yes']">
                        <xsl:sort select="substring-before(substring-after(description, 'SortOrder:&lt;/b&gt;'), '&lt;/div&gt;')" data-type="number" order="ascending"/>
                        <xsl:sort select="title" />

                        <!--                        <xsl:if test="substring-before(substring-after(description, 'Active:&lt;/b&gt;'), '&lt;/div&gt;')=' Yes'">-->
                            <a>
                                <xsl:attribute name="href">
                                    <!--
                  <xsl:call-template name="getWSSDescriptionField">
                    <xsl:with-param name="description" select="description"/>
                    <xsl:with-param name="fieldName" select="'Link'"/>
                  </xsl:call-template>
                  -->
                                    <xsl:value-of select="concat(concat('/Tulsa/2009/Speakers/', translate(title, ' ,.','')), '/')"/>
                                </xsl:attribute>
                                <img border="1" style="border-color: black;" hspace="3" vspace="3" width="46" height="60">
                                    <xsl:attribute name="src">
                                        <xsl:text>/Tulsa/2009/SiteImages/Speakers/</xsl:text>
                                        <xsl:value-of select ="translate(title,' ,.','_')"/>
                                        <xsl:text>.jpg</xsl:text>
                                    </xsl:attribute >
                                    <xsl:attribute name="alt">
                                        <xsl:value-of select="title"/>
                                        <xsl:variable name="tagline">
                                            <xsl:call-template name="getWSSDescriptionField">
                                                <xsl:with-param name="description" select="description"/>
                                                <xsl:with-param name="fieldName" select="'Tagline'"/>
                                            </xsl:call-template>
                                        </xsl:variable>
                                        <xsl:if test="$tagline!=''">
                                            <xsl:text>, </xsl:text>
                                            <xsl:value-of select="$tagline"/>
                                        </xsl:if>
                                        <xsl:variable name="company">
                                            <xsl:call-template name="getWSSDescriptionField">
                                                <xsl:with-param name="description" select="description"/>
                                                <xsl:with-param name="fieldName" select="'Company'"/>
                                            </xsl:call-template>
                                        </xsl:variable>
                                        <xsl:if test="$company!=''">
                                            <xsl:text>, </xsl:text>
                                            <xsl:value-of select="$company"/>
                                        </xsl:if>
                                    </xsl:attribute>
                                </img>
                            </a>
                            <xsl:if test="position() mod 3 = 0">
                                <br/>
                            </xsl:if>
<!--                        </xsl:if>-->
                    </xsl:for-each>
                </td>
            </tr>
        </table>
    </xsl:template>

    <xsl:template name="string-replace-all">
        <xsl:param name="text"/>
        <xsl:param name="replace"/>
        <xsl:param name="with"/>
        <xsl:choose>
            <xsl:when test="contains($text, $replace)">
                <xsl:value-of select="substring-before($text, $replace)"/>
                <xsl:value-of select="$with"/>
                <xsl:call-template name="string-replace-all">
                    <xsl:with-param name="text" select="substring-after($text, $replace)"/>
                    <xsl:with-param name="replace" select="$replace"/>
                    <xsl:with-param name="with" select="$with"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$text"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template name="getWSSDescriptionField">
        <xsl:param name="description"/>
        <xsl:param name="fieldName"/>

        <xsl:variable name="before" select="concat($fieldName,':&lt;/b&gt; ')" />
        <xsl:variable name="after" select ="'&lt;/div&gt;'" />
        <xsl:variable name="htmlFieldStart" select="'&lt;div class=ExternalClass'" />

        <xsl:variable name = "leftRemoved" >
            <xsl:value-of disable-output-escaping="yes" select="substring-after($description,$before)"/>
        </xsl:variable>
        <xsl:variable name = "results">
            <xsl:value-of disable-output-escaping="yes" select="substring-before($leftRemoved,$after)" />
        </xsl:variable>

        <!-- HTML fields have extra <div>-->
        <xsl:choose>
            <xsl:when test="starts-with($results, $htmlFieldStart)">
                <xsl:value-of disable-output-escaping="yes" select="substring-after($results,'&gt;')" />
            </xsl:when >
            <xsl:otherwise>
                <xsl:choose>
                    <xsl:when test="contains($results, '&amp;amp')">
                        <xsl:call-template name="string-replace-all">
                            <xsl:with-param name="text" select="$results"/>
                            <xsl:with-param name="replace" select="'&amp;amp;'"/>
                            <xsl:with-param name="with" select="'&amp;'"/>
                        </xsl:call-template>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="$results"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:transform>

I’ll continue explaining more of the other sections of the site, plans for the future and more in upcoming posts!

I definitely don’t claim to be an XSLT expert. I’ve just managed to keep making it do what I need as I need to over the years. It is an excellent way to build functionality into SharePoint with no-code out of the box web parts.

Let me know if you have any questions and/or suggestions for improvements!

3月19日

Get Your Head In the Clouds with SQL Server Data Services Presentation

Yesterday I had the great privilege of presenting to the Oklahoma Chapter of the IAMCP (International Association of Microsoft Certified Partners). This was the first time in a few years that I presented to a mostly non-developer audience. I really enjoyed the challenge and hope to have the opportunity to do that more frequently. It is much more challenging, since you have to actually explain something without really being able to dive into code and show exactly what your talking about.

Since SQL Data Services along with the rest of the Windows Azure framework is still in beta, I tried to make the session as interactive as possible with Q & A, Open Discussion, etc.

Here are the slides that I used: zip (2.4 mb – Office 2007/pptx).

I grabbed them from our awesome Microsoft Developer Evangelist Zain Naboulsi, who presented VS2008 Debugging, Mobile and Azure back on Jan 30th.

Since he was covering so much and pressed for time, he didn’t get to cover SQL Data Services much. On top of that, it was just two days earlier on Jan 28th that Microsoft actually released the beta for SQL Data Services SDK.

Of course, as I left the meeting, I received the announcement in my mailbox that Microsoft just pushed a new version of Azure SDK:

I’ll be delivering the same slides, but with a LOT more code demonstrations on March 28th, 2009 at the second annual School of Dev event! This year for the first time it is joining forces with the first annual SharePoint Saturday Tulsa event, where I’ll be giving the presentation that I have been more frequently doing for awhile now: Building Powerful WebParts for SharePoint 2007. With all the speakers and topics, you wont want to miss this event! See you there!

1月10日

2009 Kicks Off Busy As Ever, INETA Speaker Bureau News and a new Geekette is on the way!

Happy New Year! At the pace that 2009 has started off at it is very obvious it will be a very successful year. Bad Economy? Ha!

Please help me congratulate the 16 new speakers welcomed into the INETA NORAM Speakers Bureau (in no particular order):

1. Chris Williams
2. Keith Elder
3. Jason Bock
4. Claudio Lassala
5. Rachel Appel
6. Andrew Dunn
7. Chris Love
8. Cory Smith
9. Tim Rayburn
10. Jim Wooley
11. Rob Windsor
12. Amanda Laucher
13. Adam Machanic
14. Stuart Celarier
15. Pete Brown
16. Steve Andrews

Thank you to all who submitted applications. The selection process was very difficult and the number of applicants overwhelming, because of this we will be having a second round in the first quarter of 2009.

Have your local INETA User Group request them to come and deliver a presentation. If you are not a member of one, join one, if there is not one near you, start one - http://www.ineta.org.

“You can learn more together than you ever could alone.”

We appreciate everyone's past and future community contributions.

It is a very exciting time! We are also launching the new INETA NORAM Regional Speakers Bureau more details will be announced shortly. We are still accepting applications for this new speaker bureau.

We just had an ultrasound done and now know that baby # 5 is a Geekette and will be here May/June!

Happy New Year!

9月4日

Quest Software's Pain-of-the-Week: The Converging Paths of SQL Server and SharePoint - Don't Wait Until It's Too Late!

I just wrapped up my first opportunity as a webcast presenter. Thanks to the terrific folks at Quest Software. They produce a bi-weekly webcast appropriately titled "Pain-of-the-Week". "These 45-minute online presentations will explore many of those challenges, present real-world use cases and offer solutions and best practices that you can use in your own environment."

The Converging Paths of SQL Server and SharePoint – Don't Wait Until It's Too Late!

SharePoint and SQL Server architecture and maintenance requirements have a lot in common. Both platforms share identical features for configuration, security and management.

Join our experts in this webcast to examine the similarities in SharePoint and SQL Server administration. Learn why it’s important for you to get familiar with both platforms to streamline your day-to-day tasks.

Presenters: David Walker, Doug Davis, David Gugick

The little that I was able to watch the attendee numbers, showed at one time over 515+ attendees. We had great Q&A session as well.

Be sure to watch the site for other upcoming webcasts that can hopefully help you alleviate your Pain-of-the-Week.

Our presentation will be available shortly under the "Past Webcasts" if you were unable to attend.

Thank you Quest for the opportunity. Everyone at Quest did a great job and they work very hard to make these webcasts useful.

8月13日

.NET Framework 3.5 SP1 (Service Pack 1) changes to ViewState causes stability issues in Sitecore products

I just received the email below from Sitecore regarding stability issues that .NET Framework 3.5 SP1 (Service Pack 1) is causing with all Sitecore products. I am glad they sent this out. Hopefully the companies using Sitecore products will see it before they install the Service Pack and lose a lot of time with the issues it is causing.

There are a couple questions that come to mind, but the first one is this the only product that will have problems?

If you are using a product that is built on top of ASP.NET you may need to be very careful. The bug described and the issues with it have not been reported specifically yet. It has simply been described as a "bug in the LosFormatter class (System.Web.UI.LosFormatter in System.Web.dll, used to serialize and deserialize an ASP.NET ViewState)."

It would be interesting to know if any other products have problems, if you know of any others let us know, via comments.

My most important question though is, could this have been caught in the Beta cycle? Or is this a bug/change put in place since the last Beta release?

Why change how ViewState is serialized and deserialized anyway? :)

ASP.NET MVC is looking more interesting all the time. Just have to wait for the rest of the marketplace to get it integrated into their products. :)

Here's the email:

Dear Sitecore Enthusiast,

You are receiving this message because you are subscribed to the Sitecore Product Issues and Patches mailing list.
On Monday, August 4th, Microsoft released the following service packs: Visual Studio 2008 SP1 and .NET 3.5 SP1.
Sitecore has discovered that these service packs introduce a bug in the LosFormatter class (System.Web.UI.LosFormatter in System.Web.dll, used to serialize and deserialize an ASP.NET ViewState). This bug causes stability issues in Sitecore products. Sitecore has raised this as an urgent priority issue with Microsoft (case number : SRQ080813600454) and is working to help resolve this issue.
In the meantime, PLEASE DO NOT INSTALL .NET 3.5 SP1 and Visual Studio 2008 SP1 on any server running a Sitecore product (including Sitecore WCMS, Intranet Portal, and Foundry) until further notice!
Symptoms associated with installing either of these service packs:

  • Memory consumption increases dramatically and single core CPU usage goes up to 100% when opening the Access Viewer or Media Library applications.
  • OutOfMemoryExceptions thrown in the Desktop and Content Editor.
  • The browser becomes unresponsive when accessing Sitecore.


Please be aware that Microsoft may include this Service Pack as part of the monthly ‘Patch Tuesday’. Please take steps to avoid the automatic installation of these service packs.
Please be aware that the final version of SQL Server 2008 will require .NET 3.5 SP1.
If you have any questions about this issue, please contact Sitecore support.
Best Regards, Sitecore Support Team.

 
没有添加内容。
尚未添加列表。