PostBackUrl And SmartNavigation Bug?#
I have a page with SmartNav, that contains a linkbutton with a
PostBackUrl.

I have found that the page that is the target of the PostBackUrl will
have it's postback property fired 2 times, and unfortunately, the 2nd
time it is fired the "PreviousPage" is set to Nothing.

I have posted a few places to see if someone from MS can confirm this is a bug, but  I am betting they are going to tell me to not use smartnav.

Categories:  |  | 
Thursday, August 31, 2006 9:30:38 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Rutgers Tennis#

A good friend of mine and a guy I hit with all the time played at Rutgers.  Now it looks like they are going to cancel the program.

A website has been created to raise some money to help their program.

http://saverutgerstennis.org/

Categories:
Wednesday, August 30, 2006 7:28:00 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

SQL Server Merge Replication#

One of the challenges in doing merge replication in SQL Server is dealing with IDENTITY columns.

One of the tricks you can use is "automatic identity range management". 

Basically you tell DB 1 to start at seed 1 and DB 2 to seed at 20,000, and when DB 1 reaches 16,000 or DB 2 reaches 36,000 it will reset those seeds to 40,000 and 60,000.

http://msdn2.microsoft.com/en-us/library/ms152543.aspx

http://msdn2.microsoft.com/en-us/library/ms146907.aspx

It appears to work well.

Categories:  |  | 
Tuesday, August 29, 2006 1:55:35 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Getting IE To Print Backgrounds And Cell Colors#

I was having a small problem getting some reports to print the way I wanted.

I turns out that to get the table cells colored backgrounds to print, click on the browser’s Tools menu. Select Internet Options, then click on the Advanced tab. Scroll down to find the Printing heading and check the box called Print Background Colors and Images. This setting affects both page backgrounds and table cell backgrounds.

Categories:  | 
Saturday, August 26, 2006 5:57:53 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Using XSD.exe#

.Net has a tool called the XML Schema Definition Tool (XSD.EXE) which can turn XSD schemas into classes.  Also, it will try to make it so those classes will conform to the schema when serialized as XML.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconxmlschemadefinitiontoolxsdexe.asp

xsd.exe pathToXSD.xsd /classes /language:VB /outputdir:C:\output

You can then serialize and deserialize the object into/from XML.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlSerializationXmlSerializerClassTopic.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlSerializationXmlSerializerClassDeserializeTopic.asp

 

 

Categories:  |  | 
Friday, August 25, 2006 2:10:35 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Is The Date On The Weekend#

This function will figure out if the given date lands on a weekend.

    Public Shared Function IsWeekend(ByVal dateOfInterest As DateTime) As Boolean
Dim d, m, y, w As Integer
d = dateOfInterest.Day
m = dateOfInterest.Month
y = dateOfInterest.Year


If m = 1 Or m = 2 Then
m += 12
y -= 1
End If


w = CInt((d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) Mod 7)
If w <> 6 And w <> 7 Then
Return False
Else
Return True
End If
End Function

Another function to do the weekend check could be this:

    Private Const ERR_INVALID_DATE = 20000
Private Const ERR_INVALID_DATE_MSG = "Date Required"

Public Function IsWeekend(ByVal DateValue As Object) As Boolean

Dim dDateValue As Date

If Not IsDate(DateValue) Then
Err.Raise(ERR_INVALID_DATE, ERR_INVALID_DATE_MSG)
Exit Function
End If

dDateValue = CDate(DateValue)
IsWeekend = (Weekday(dDateValue) Mod 6 = 1)

End Function
Categories:  | 
Friday, August 25, 2006 11:33:23 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Using Postbacks in ASP.NET From showModalDialog pages.#

If you have an ASP.NET page (.aspx) opened with the JavaScript showModalDialog() function and inside that page there is a form doing PostBack, when the PostBack is being done the page loads in another (popup) window. The easiest way to prevent this is to add the following tag inside the <HEAD></HEAD> tags of the ASP.NET page:

<base target="_self">

From: http://www.geekpedia.com/Question23_Using-showModalDialog()-with-an-ASP.NET-page-that-does-PostBack-opens-another-window.html

Categories:  |  | 
Thursday, August 24, 2006 1:52:59 PM (Central Standard Time, UTC-06:00) #    Comments [1]  | 

 

Databinding "Bind()" in ASP.NET#

If you used the developemt tools to create a datagrid in ASP.NET 2.0, it will show something like:

NavigateUrl='<%# Bind("EmployeeId") %>'

But what if you wanted to do something more complicated that just ge the EmployeeId into the field, like for example if you wanted to run a JS function.  Then you have to do away with Bind and use the more verbose DataBinder method like this: 

NavigateUrl='<%# "javascript:UseThisJobIndex(" & DataBinder.Eval(Container.DataItem,"JobIndex") & ")" %>'

That's all there is to it.

 

Categories:  |  |  | 
Thursday, August 24, 2006 12:16:56 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

My Very Educated Mother Just Said Uh-oh No Pluto!!#
http://msnbc.msn.com/id/14489259/

I wish I coudl take credit for that line, but it was from Colbert.

So now Pluto is going to be a Drawf Planet, along with UB313 (Xena) and Ceres.


To see the full image you might need to expand your window or use the scrollbar at the bottom of this article.

UB313 is larger than Pluto, and farther out in orbit.

I kinda liked the idea of calling Pluto and Charon a "dual planet," as Charon is so large that it was somewhat unfair to say that it orbits Pluto, but they aren't going to do that.

Ceres is the largest asteroid in the Asteroid Belt but because it hasn't swept the area clear of other asteroids (and I guess it never will b/c of its close proximity to Jupiter) it will never meet the new definition of a planet:

“a celestial body that is in orbit around the sun, has sufficient mass for its self-gravity to overcome rigid body forces so that it assumes a nearly round shape, and has cleared the neighborhood around its orbit.”

Categories:  | 
Thursday, August 24, 2006 10:20:08 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Backup/Restore Cisco Pix Configuration#

To do this you

  1. Need a TFTP server running (solarwinds)
  2. Need to telnet into the device
  3. Need to be in enable mode

First to make the backup:

write net 192.168.1.2:MyBackup.pixconfig

where the IP is the IP of your TFTPserver

Then to restore it later, you need to enter config terminal mode first and then restore the file:

config term
configure net 192.168.1.2:MyBackup.pixconfig

and there you have it...

The changes will take immediate effect, but you will still need to write them into the non volatile memory, or the changes will be lost when you reboot the device.

 

Categories:  |  | 
Friday, August 11, 2006 3:55:29 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Fountain of Time#
Categories:
Friday, August 11, 2006 9:55:47 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Throwing the Right Exception#

Brad Abrams has a good article out there showing a list of all the .net exceptions you can throw from your code.

There are some exceptions that are not shown here, for example ConfigurationException, but this is a good starting point.

From Brad's article:

+--System.Object  

   |

   |

   +--System.Exception  

       |

       |

       +--System.SystemException  

           |

           |

           +--System.ArgumentException  

           |   |

           |   |

           |   +--System.ArgumentNullException  

           |   |

           |   |

           |   +--System.ArgumentOutOfRangeException  

           |   |

           |   |

           |   +--System.DuplicateWaitObjectException  

           |

           |

           +--System.ArithmeticException  

           |   |

           |   |

           |   +--System.DivideByZeroException  

           |   |

           |   |

           |   +--System.OverflowException  

           |   |

           |   |

           |   +--System.NotFiniteNumberException

           |

           |

           +--System.ArrayTypeMismatchException  

           |

           |

           +--System.ExecutionEngineException  

           |

           |

           +--System.FormatException  

           |

           |

           +--System.IndexOutOfRangeException  

           |

           |

           +--System.InvalidCastException  

           |

           |

           +--System.InvalidOperationException  

           |   |

           |   |

           |   +--System.ObjectDisposedException  

           |

           |

           +--System.InvalidProgramException  

           |

           |

           +--System.IO.IOException  

           |   |

           |   |

           |   +--System.IO.DirectoryNotFoundException  

           |   |

           |   |

           |   +--System.IO.EndOfStreamException  

           |   |

           |   |

           |   +--System.IO.FileLoadException  

           |   |

           |   |

           |   +--System.IO.FileNotFoundException  

           |   |

           |   |

           |   +--System.IO.PathTooLongException  

           |

           |

           +--System.NotImplementedException  

           |

           |

           +--System.NotSupportedException  

           |

           |

           +--System.NullReferenceException  

           |

           |

           +--System.OutOfMemoryException  

           |

           |

           +--System.RankException  

           |

           |

           +--System.Security.SecurityException  

           |

           |

           +--System.Security.VerificationException  

           |

           |

           +--System.StackOverflowException  

           |

           |

           +--System.Threading.SynchronizationLockException  

           |

           |

           +--System.Threading.ThreadAbortException  

           |

           |

           +--System.Threading.ThreadStateException  

           |

           |

           +--System.TypeInitializationException  

           |

           |

           +--System.UnauthorizedAccessException 


Jeff Atwood put up another article where he uses a little console app to find all classes named "*Exception". 


Here is his list:


System.AppDomainUnloadedException
System.ApplicationException
System.ArgumentException
System.ArgumentNullException
System.ArgumentOutOfRangeException
System.ArithmeticException
System.ArrayTypeMismatchException
System.BadImageFormatException
System.CannotUnloadAppDomainException
System.ComponentModel.Design.CheckoutException
System.ComponentModel.Design.Serialization.CodeDomSerializerException
System.ComponentModel.InvalidEnumArgumentException
System.ComponentModel.LicenseException
System.ComponentModel.WarningException
System.ComponentModel.Win32Exception
System.Configuration.ConfigurationException
System.ContextMarshalException
System.Data.ConstraintException
System.Data.DataException
System.Data.DBConcurrencyException
System.Data.DeletedRowInaccessibleException
System.Data.DuplicateNameException
System.Data.EvaluateException
System.Data.ExprException
System.Data.InRowChangingEventException
System.Data.InvalidConstraintException
System.Data.InvalidExpressionException
System.Data.MissingPrimaryKeyException
System.Data.NoNullAllowedException
System.Data.Odbc.OdbcException
System.Data.OleDb.OleDbException
System.Data.ReadOnlyException
System.Data.RowNotInTableException
System.Data.SqlClient._ValueException
System.Data.SqlClient.SqlException
System.Data.SqlTypes.SqlNullValueException
System.Data.SqlTypes.SqlTruncateException
System.Data.SqlTypes.SqlTypeException
System.Data.StrongTypingException
System.Data.SyntaxErrorException
System.Data.TypedDataSetGeneratorException
System.Data.VersionNotFoundException
System.DivideByZeroException
System.DllNotFoundException
System.Drawing.Printing.InvalidPrinterException
System.DuplicateWaitObjectException
System.EntryPointNotFoundException
System.Exception
System.ExecutionEngineException
System.FieldAccessException
System.FormatException
System.IndexOutOfRangeException
System.InvalidCastException
System.InvalidOperationException
System.InvalidProgramException
System.IO.DirectoryNotFoundException
System.IO.EndOfStreamException
System.IO.FileLoadException
System.IO.FileNotFoundException
System.IO.InternalBufferOverflowException
System.IO.IOException
System.IO.IsolatedStorage.IsolatedStorageException
System.IO.PathTooLongException
System.Management.ManagementException
System.MemberAccessException
System.Messaging.MessageQueueException
System.MethodAccessException
System.MissingFieldException
System.MissingMemberException
System.MissingMethodException
System.MulticastNotSupportedException
System.Net.CookieException
System.Net.ProtocolViolationException
System.Net.Sockets.SocketException
System.Net.WebException
System.NotFiniteNumberException
System.NotImplementedException
System.NotSupportedException
System.NullReferenceException
System.ObjectDisposedException
System.OutOfMemoryException
System.OverflowException
System.PlatformNotSupportedException
System.RankException
System.Reflection.AmbiguousMatchException
System.Reflection.CustomAttributeFormatException
System.Reflection.InvalidFilterCriteriaException
System.Reflection.ReflectionTypeLoadException
System.Reflection.TargetException
System.Reflection.TargetInvocationException
System.Reflection.TargetParameterCountException
System.Resources.MissingManifestResourceException
System.Runtime.InteropServices.COMException
System.Runtime.InteropServices.ExternalException
System.Runtime.InteropServices.InvalidComObjectException
System.Runtime.InteropServices.InvalidOleVariantTypeException
System.Runtime.InteropServices.MarshalDirectiveException
System.Runtime.InteropServices.SafeArrayRankMismatchException
System.Runtime.InteropServices.SafeArrayTypeMismatchException
System.Runtime.InteropServices.SEHException
System.Runtime.Remoting.MetadataServices.SUDSGeneratorException
System.Runtime.Remoting.MetadataServices.SUDSParserException
System.Runtime.Remoting.RemotingException
System.Runtime.Remoting.RemotingTimeoutException
System.Runtime.Remoting.ServerException
System.Runtime.Serialization.SerializationException
System.Security.Cryptography.CryptographicException
System.Security.Cryptography.CryptographicUnexpectedOperationException
System.Security.Policy.PolicyException
System.Security.SecurityException
System.Security.VerificationException
System.Security.XmlSyntaxException
System.ServiceProcess.TimeoutException
System.StackOverflowException
System.SystemException
System.Threading.SynchronizationLockException
System.Threading.ThreadAbortException
System.Threading.ThreadInterruptedException
System.Threading.ThreadStateException
System.Threading.ThreadStopException
System.TypeInitializationException
System.TypeLoadException
System.TypeUnloadedException
System.UnauthorizedAccessException
System.UriFormatException
System.Web.HttpApplication+CancelModuleException
System.Web.HttpCompileException
System.Web.HttpException
System.Web.HttpParseException
System.Web.HttpRequestValidationException
System.Web.HttpUnhandledException
System.Web.Services.Discovery.InvalidContentTypeException
System.Web.Services.Discovery.InvalidDocumentContentsException
System.Web.Services.Protocols.SoapException
System.Web.Services.Protocols.SoapHeaderException
System.Windows.Forms.AxHost+InvalidActiveXStateException
System.Xml.Schema.XmlSchemaException
System.Xml.XmlException
System.Xml.XPath.XPathException
System.Xml.Xsl.XsltCompileException


The code used to create this list (.net 1.1) is:


Sub Main()
ReflectionSearch(".*exception$")
Console.ReadLine()
End Sub

Sub ReflectionSearch(ByVal strPattern As String)
Dim a As Reflection.Assembly
Dim m As Reflection.Module
Dim t As Type
Dim al As New ArrayList
Dim sl As New SortedList
Dim strAssemblyName As String

For Each strAssemblyName In DefaultAssemblyList()
a = Reflection.Assembly.Load(strAssemblyName)
For Each m In a.GetModules
For Each t In m.GetTypes
al.Add(t)
Dim strFullName As String = t.FullName
If Regex.IsMatch(strFullName, strPattern, RegexOptions.IgnoreCase) Then
sl.Add(strFullName, Nothing)
End If
Next
Next
Next

Dim de As DictionaryEntry
For Each de In sl
Console.WriteLine(de.Key)
Next
Console.WriteLine(sl.Count.ToString & " matches for " & strPattern)
End Sub

Function DefaultAssemblyList() as ArrayList
Dim al As New ArrayList
With al
.Add("mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
.Add("System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
.Add("System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
.Add("System.Runtime.Remoting, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
.Add("System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
.Add("System.Xml, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
.Add("System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.DirectoryServices, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Drawing.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Messaging, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Runtime.Serialization.Formatters.Soap, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Security, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.ServiceProcess, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Web, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Web.Services, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
.Add("System.Management, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
End With
Return al
End Function

System.Xml.Xsl.XsltException


Categories:  |  |  | 
Thursday, August 10, 2006 10:07:53 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Accessing DLLs stored in the GAC#

You can access the dlls by going to this undocumented folder:

C:\WINDOWS\ASSEMBLY\GAC_MSIL

If you go to C:\WINDOWS\ASSEMBLY\ it will not show you the GAC_MSIL folder, but rather a view of all DLLs that you can't copy.

 

Categories:  |  | 
Wednesday, August 09, 2006 10:35:34 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

VS.Net Macro for Generating Simple and CSLA Property Accessors#

Here are a few macros I wrote to generate property accessors from your class level variables.

These Macros are absolutely not an example of great coding.  They are really pretty crappy, but they do the job, so as I kept tweaking them I never went back to clean up the code or look into more elegant ways to accomplish this stuff.

Some notes about these macros:

1) dasBlog's code display tools somehow screws up the LFs, so if you cut and paste this code you might want to first paste it into Word, or WordPad.

2) These macros need some space between your last bit of code and the end of your class.  In other words, the line directly above "End Class" can't have code in it.  Fixing this bug wouldn't be a big deal but I haven't done it yet.

3) These macros will allow formatting of your variables/accessors in any of the following ways:

private csClassLevelString as String '*** property name "ClassLevelString"
private mModuleLevelInt as Integer '*** property name "ModuleLevelInt"
private _SomeObject as Object '*** property name "SomeObject"
private camelCaseBoolean as Boolean '*** WON'T work: property will be named "CaseBoolean"

4) To use these macros, simply declare your class level (instance) variables.  Then with your mouse, highlight the ones you want to create property accessors for.  You need to highlight the entire definition from "private" to data type, and of course you can highlight a bunch at 1 time.  i.e. I could highlight the entire code block above and it would produce 4 property accessors.

5) Again... this code... well it kinda sucks.  So if you are looking for a lesson on producing good code, avert your eyes, but the output is good.

 

Imports System
Imports EnvDTE