Archive for December, 2012

Quick reminder on how to create an XML file in C#

1) Declare the XML  document

XmlDocument xmlDoc = new XmlDocument();

2) Add the XML Declaration Statement

XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0","utf-8",null);
xmlDoc.InsertBefore(xmlDeclaration, xmlDoc.DocumentElement);

3) Create the Root Elements can be done in two different ways

  • First way utilites the CreateElement function
XmlElement rootNode  = xmlDoc.CreateElement("Family");
xmlDoc.AppendChild(rootNode);
  • Second way is more gritty with a string
string documentStart = "<Family></Family>";
xmlDocument.Load(new StringReader(documentStart));

4) Create Parent and Child Elements

XmlElement parentNode  = xmlDoc.CreateElement("Parent");
XmlElement childNode  = xmlDoc.CreateElement("Child");
parentNode.AppendChild(childName);
Advertisements

Leave a comment

Timing T-SQL

So my client asked me to remove all the stored procedure and temp table calls from my code to move toward just using functions (which I wanted to use in the first place but they hadn’t give me “create function” rights).

After converting my code to use just functions, it made me wonder which was faster, and I didn’t want to pull out SQL Profiler … I wondered if I could do it in SQL Management Studio directly writing some T-SQL and I came across this website:

http://sqlserver2000.databases.aspfaq.com/how-do-i-time-my-t-sql-code.html

That was nice and simple … exactly what I needed

DECLARE @a DATETIME, @b DATETIME
SET @a = CURRENT_TIMESTAMP

{MY CODE}

SET @b = CURRENT_TIMESTAMP
SELECT DATEDIFF(MS, @a, @b)

It just so happened that most of the time the stored procedure route was actually faster … but added additional querying steps and unnecessary added tables that they didn’t want to do.  And they thought it looked messier … the client is always right (so they say) … so functions it is.

Leave a comment

C# Bubbling Events

I need to bubble an event up from one control to another or a top level page in my ASP.NET app … hmmm … how do I do that again.

Way 1: Standard Event

public class MyClass
{
     public event EventHandler MyEvent;
}

Way 2: Custom EventArgs

public class MyClass
{
     public delegate void MyCustomEventHandler(object sender, MyCustomEventArgs e);

     public event MyCustomEventHandler MyEvent;

     protected virtual void OnMyCustomEventHandler(object sender, MyCustomEventArgs e)
     {
          MyCustomEventHandler handler = MyEvent;
          if (handler != null) { handler (this, e); }
     }
}

// Custom Event Args
public class MyCustomEventArgs : System.EventArgs
{
     public string item1 = "";
     public string item2 = "";
     public MyCustomEventArgs(string i1, string i2)
     {
          item1 = i1;
          item2 = i2;
     }
}

Leave a comment

jQuery and Telerik RadControls

We ran into quite an odd issue today at work.  We’ve built this webpage that is all AJAX-iffied and such, and found out that any time we would select a drop down list, our help link buttons stopped working.

All the help link buttons are little jQuery elements that are extremely simple:

$('.showHelp').click(function (e) {
     e.preventDefault();
     ShowHelp();
}

We determined that every time we would cause a postback (albeit a partial one), we would lose the onClick event of the .showHelp classes … found out that neither the UpdatePanel nor Telerik’s RadPanels do this automatically.  I figured that something wasn’t initializing on the postback, so after searching for some time I came across the following:

http://encosia.com/document-ready-and-pageload-are-not-the-same/

We ended up with the following:

// Loads on Window Load
$(window).load(function () {
	pageLoad();
})

// Loads on Postback
function pageLoad()
{
	$('.showHelp').click(function (e) 
	{
		e.preventDefault();
		ShowHelp();
	}
}

Works perfectly now.

Leave a comment