Tuesday, June 8, 2010

SharePoint Gantt Chart Formatting

The SharePoint default Gantt chart doesn't provide any formatting but with a Content Editor Web Part and a little bit of CSS you can change the layout and formatt.

What this code does:
- change the images width from 16 to 2 pixels.
- remove the display of weekdays
- rotate the dates to display them vertically


Reference: Link

If you are looking for a zoom slider with JQuery:Link

Thursday, June 3, 2010

Submit InfoPath 2007 with Code (SharePoint list & Email)

Create a SharePoint Library Submit data connection and an Email Submit data connection and then programmatically execute the data connections in the FormEvents_Submit event handler of the InfoPath form, and perform a Close the form action as part of the Submit Options on the InfoPath form.
  1. In InfoPath, design a browser-compatible InfoPath form template
  2. On the Data Source task pane, add a Text Field node named formName under the myFields node.
  3. On the Tools menu, choose Data Connections.
  4. On the Data Connections dialog box, click Add, and create a new Submit data connection As an e-mail message. Fill in any email address in the To field; you will be changing this in code anyway. Accept the default name of Email Submit for the data connection.
  5. On the Data Connections dialog box, click Add, and create a new Submit data connection To a document library on a SharePoint site. Fill in a valid URL to a Document Library. Select the formName node from the Main data source to be the File name for the form. Accept the default name of SharePoint Library Submit for the data connection.
  6. On the Tools menu, choose Submit Options.
  7. On the Submit Options dialog box, select Allow users to submit this form, deselect the Show the Submit menu item and the Submit toolbar button check box, click Advanced and select Close the form from the After submit drop-down list box, select Perform custom action using Code, and click Edit Code.
  8. This will add a FormEvents_Submit event handler to the InfoPath form template.
  9. In Microsoft Visual Studio Tools for Applications, add the following C# code to the FormEvents_Submit event handler:
// Get a reference to the main data source
    XPathNavigator root = MainDataSource.CreateNavigator();
      // Generate a name for the form to be saved in SharePoint
        string formName = Guid.NewGuid().ToString();
          // Set the name of the form on the data connection
            root.SelectSingleNode(
              "//my:formName", NamespaceManager).SetValue(formName);
                // Submit the form to SharePoint
                  DataConnection spConn =
                    DataConnections["SharePoint Library Submit"];
                      spConn.Execute();
                        // Set the properties for the email
                          string toAddress = root.SelectSingleNode(
                            "//my:sendTo", NamespaceManager).Value;
                              EmailSubmitConnection emailConn =
                                (EmailSubmitConnection)DataConnections["Email Submit"];
                                  emailConn.To.SetStringValue(toAddress);
                                    emailConn.Subject.SetStringValue("This subject was set from code");
                                      emailConn.Introduction = "This email was generated by code.";
                                        emailConn.EmailAttachmentType = EmailAttachmentType.None;
                                          // Send the email
                                            emailConn.Execute();
                                              // Indicate success
                                                e.CancelableArgs.Cancel = false;

                                                Save your work and build the code.


                                                Wednesday, June 2, 2010

                                                Split Comma Delimited String

                                                Andy has put together a really good video on Comma Delimited String parsing in sql. Personally I am a big fan of the CLR functionality on this issue. Make sure to check out the video he has put together.

                                                Link to video:
                                                http://www.sqlshare.com/SplittingDelimitedStrings_774.aspx

                                                Link to Andy's example:
                                                http://www.sqlshare.com/references.774.zip

                                                Here is another example of the split function:

                                                GO
                                                /****** Object: UserDefinedFunction [dbo].[fn_Split] Script Date: 06/02/2010 17:05:37 ******/
                                                SET ANSI_NULLS ON
                                                GO
                                                SET QUOTED_IDENTIFIER ON
                                                GO

                                                ALTER FUNCTION [dbo].[fn_Split]
                                                (
                                                @sText VARCHAR(8000) ,
                                                @sDelim VARCHAR(20) = ' '
                                                )
                                                RETURNS @retArray TABLE
                                                (
                                                idx SMALLINT PRIMARY KEY ,
                                                value VARCHAR(8000)
                                                )
                                                AS
                                                BEGIN
                                                DECLARE
                                                @idx SMALLINT ,
                                                @value VARCHAR(8000) ,
                                                @bcontinue BIT ,
                                                @iStrike SMALLINT ,
                                                @iDelimlength TINYINT

                                                IF @sDelim = 'Space'
                                                BEGIN
                                                SET @sDelim = ' '
                                                END

                                                SET @idx = 0
                                                SET @sText = LTRIM(RTRIM(@sText))
                                                SET @iDelimlength = DATALENGTH(@sDelim)
                                                SET @bcontinue = 1

                                                IF NOT ( ( @iDelimlength = 0 )
                                                OR ( @sDelim = 'Empty' )
                                                )
                                                BEGIN
                                                WHILE @bcontinue = 1
                                                BEGIN

                                                --If you can find the delimiter in the text, retrieve the first element and
                                                --insert it with its index into the return table.

                                                IF CHARINDEX(@sDelim, @sText) > 0
                                                BEGIN
                                                SET @value = SUBSTRING(@sText, 1,
                                                CHARINDEX(@sDelim,
                                                @sText) - 1)
                                                BEGIN
                                                INSERT @retArray
                                                ( idx, value )
                                                VALUES
                                                ( @idx, @value )
                                                END

                                                --Trim the element and its delimiter from the front of the string.
                                                --Increment the index and loop.
                                                SET @iStrike = DATALENGTH(@value)
                                                + @iDelimlength
                                                SET @idx = @idx + 1
                                                SET @sText = LTRIM(RIGHT(@sText,
                                                DATALENGTH(@sText)
                                                - @iStrike))

                                                END
                                                ELSE
                                                BEGIN
                                                --If you can’t find the delimiter in the text, @sText is the last value in
                                                --@retArray.
                                                SET @value = @sText
                                                BEGIN
                                                INSERT @retArray
                                                ( idx, value )
                                                VALUES
                                                ( @idx, @value )
                                                END
                                                --Exit the WHILE loop.
                                                SET @bcontinue = 0
                                                END
                                                END
                                                END
                                                ELSE
                                                BEGIN
                                                WHILE @bcontinue = 1
                                                BEGIN
                                                --If the delimiter is an empty string, check for remaining text
                                                --instead of a delimiter. Insert the first character into the
                                                --retArray table. Trim the character from the front of the string.
                                                --Increment the index and loop.
                                                IF DATALENGTH(@sText) > 1
                                                BEGIN
                                                SET @value = SUBSTRING(@sText, 1, 1)
                                                BEGIN
                                                INSERT @retArray
                                                ( idx, value )
                                                VALUES
                                                ( @idx, @value )
                                                END
                                                SET @idx = @idx + 1
                                                SET @sText = SUBSTRING(@sText, 2,
                                                DATALENGTH(@sText) - 1)

                                                END
                                                ELSE
                                                BEGIN
                                                --One character remains.
                                                --Insert the character, and exit the WHILE loop.
                                                INSERT @retArray
                                                ( idx, value )
                                                VALUES
                                                ( @idx, @sText )
                                                SET @bcontinue = 0
                                                END
                                                END

                                                END

                                                RETURN
                                                END