<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-435368397505412875</id><updated>2011-11-27T14:00:56.114-10:00</updated><category term='c#'/><category term='.net'/><category term='master pages'/><title type='text'>Coder Kyle</title><subtitle type='html'>Java, .NET, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-1464065007969257505</id><published>2010-09-21T20:21:00.002-10:00</published><updated>2010-09-21T20:25:41.678-10:00</updated><title type='text'></title><content type='html'>I am a HelpDesk Manager now. So I haven't been doing a lot of coding. Here is a dos batch script I put together to copy a configuration onto every computer inside of 254*4 ip addresses (ip addresses changed for obscure security):&lt;br /&gt;&lt;br /&gt;for %%x in (117 118 119 121) do for /l %%y in (1,1,253) do for /D %%z in ("\\191.210.%%x.%%y\c$\documents and settings\*") do copy medpros.jgp "%%z\Application Data\Jolly Giant Software\QWS3270 Secure\medpros.jgp"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-1464065007969257505?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/1464065007969257505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2010/09/i-am-helpdesk-manager-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/1464065007969257505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/1464065007969257505'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2010/09/i-am-helpdesk-manager-now.html' title=''/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-199359763732007000</id><published>2009-07-31T15:43:00.003-10:00</published><updated>2009-07-31T15:51:26.803-10:00</updated><title type='text'>Unlocking PureEdge forms</title><content type='html'>I was creating an inprocessing web application. It had to serve up many official legal forms. So I couldn't mess with their layout or content much without making them invalid. One of the forms was a locked XFDL PureEdge form. I really needed to get some hardcoded data off the form. The form was base64 encoded and had a lock protection thing set on it.&lt;br /&gt;&lt;br /&gt;A normal base64 decoder wouldn't work because of some unicode character problems so I wrote a custom decoder. Once the form was decoded I found the text &lt;vfd_lockout&gt;on&lt;/vfd_lockout&gt; and switched it to off and the form was unlocked. Now I could modify it using the pureEdge developer.&lt;br /&gt;&lt;br /&gt;This was around a year ago. I've been digging through my emails trying to find all the specific details so I can log them here for myself and for others but I can't find it. So for now I will just write this until I have to re-write the custom decoder later and can better document the steps taken (many frustrating days of work).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-199359763732007000?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/199359763732007000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/unlocking-pureedge-forms.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/199359763732007000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/199359763732007000'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/unlocking-pureedge-forms.html' title='Unlocking PureEdge forms'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/14730316994929550406</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-6015059316116246632</id><published>2009-07-31T10:11:00.002-10:00</published><updated>2009-07-31T10:21:43.196-10:00</updated><title type='text'>GlassFish IIS passthrough SSO</title><content type='html'>JCIFS only does NTLMv1. Our security policies here dictate that only NTLMv2 should be used. JCIFS does NTLMv1 through a man-in-the-middle way of passing the authentication request from the browser to the web server then to the active directory controller then back.&lt;br /&gt;&lt;br /&gt;There is documentation about this at: http://jcifs.samba.org/src/docs/ntlmhttpauth.html&lt;br /&gt;&lt;br /&gt;One solution is to put IIS in front of GlassFish to handle the Single Sign On.&lt;br /&gt;&lt;br /&gt;So I setup an IIS server with the isapi sun-passthrough.dll with integrated security enabled. I pointed it to our development server stand-alone (no cluster, no load balancer, no node agents). Request.getRemoteUser() isn't being populated but I am able to pull the authenticated username by base64 decoding the NTLM type 3 message in request.getHeader("Authorization") that is passed along from IIS. &lt;br /&gt;&lt;br /&gt;I don't want to do this in every web application though. So a better solution is needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-6015059316116246632?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/6015059316116246632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/glassfish-iis-passthrough-sso.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6015059316116246632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6015059316116246632'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/glassfish-iis-passthrough-sso.html' title='GlassFish IIS passthrough SSO'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/14730316994929550406</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-4421649205868854022</id><published>2009-07-31T09:13:00.005-10:00</published><updated>2009-07-31T09:36:44.077-10:00</updated><title type='text'>Google Voice, VOIP, SIP, MagicJack, Gizmo, XLite, WRTP54G</title><content type='html'>Google Voice will only allow you to do PSTN to PSTN (public switched telephone network) calls. There is no way to dial out from a computer or directly receive calls on a computer. I am moving to Japan and will need to call back to the US often.&lt;br /&gt;&lt;br /&gt;There are a few services that provide PSTN dial in to SIP forwarding. Ipkall and Gizmo offer free dial in to SIP phone numbers. Gizmo makes money on outgoing phone calls. IpKall.. doesn't make money and only have dial in lines in washington.&lt;br /&gt;&lt;br /&gt;GV does offer forwarding to PSTN phone numbers or Gizmo SIP accounts. So I can use my GV California number forwarded to Gizmo SIP and answer on my computer. I can't call out though.&lt;br /&gt;&lt;br /&gt;A good friend gave me his unused Magic Jack. MJ is a USB to PSTN (RJ11) device plus unlimited service for a year for $40. Having a windows computer running 24/7 to be able to receive phone calls on MJ is annoying. If any computer was going to be running 24/7 at my house it wouldn't be running windows, it would be running Linux. MJ doesn't support Linux. Having a usb dongle always connected is slightly annoying. MJ forces advertising onto the screen when calls are made or received. Annoying.&lt;br /&gt;&lt;br /&gt;So I ran some software to export the MJ SIP account information. Gizmo wouldn't allow me to put that SIP info in. Gizmo software only seems to support it's own SIP service.&lt;br /&gt;&lt;br /&gt;I put the MJ SIP info into XLite and it didn't work. I changed the settings 20 times. Then it did suddenly work. I closed it and reopened it. No go. Changed the settings 20 times and suddenly it worked again. No settings seemed to work right away. Eventually I figured out that the first connect was failing but changing settings forced a re-attempt. I'll go more into details on that later. I found that the older X-Lite 2.0 didn't have this problem. So I got that setup on Linux and Windows.&lt;br /&gt;&lt;br /&gt;Now I can dial out and receive calls on the computer from anywhere yeahhh! Now I want to hook up a wireless phone. I can't use the MJ hardware anymore. There are some old undocumented drivers to get MJ hardware working with XLite but I couldn't get them to work.&lt;br /&gt;&lt;br /&gt;So I ordered a WRTP54G-ER Wireless Router w/ Earthlink TrueVoice for $30! Wifi and VOIP SIP in one router with VOIP priority. These things sell for around $200 but noone wants to use EarthLink VOIP. The device is locked to EarthLink. So I will have to hack it and make it use the MJ SIP account information. I've been waiting for 3 weeks for it to show up. More info on that when it shows up.&lt;br /&gt;&lt;br /&gt;I seem to do everything the hard way to save a few bucks. I enjoy most of the process but in the end it sometimes ends up not being worth it. This blog helps add some value to my hard work. Maybe someday someone will read it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-4421649205868854022?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/4421649205868854022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/google-voice-voip-sip-magicjack-gizmo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/4421649205868854022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/4421649205868854022'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/google-voice-voip-sip-magicjack-gizmo.html' title='Google Voice, VOIP, SIP, MagicJack, Gizmo, XLite, WRTP54G'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/14730316994929550406</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-6161043325048466028</id><published>2009-07-31T09:07:00.002-10:00</published><updated>2009-07-31T09:12:30.073-10:00</updated><title type='text'>Java GlassFish JCIFS access logging NULL-AUTH-USER</title><content type='html'>If you are using JCIFS for java web application SSO authentication in GlassFish you will not get usernames logged in the access log.&lt;br /&gt;&lt;br /&gt;I posted this at: http://forums.java.net/jive/thread.jspa?messageID=358412 but this solution took 7 hours to develop and should help some other people so I am reposting it here.&lt;br /&gt;&lt;br /&gt;I ran into the same problem. We are using jcifs.http.NtlmHttpFilter for authentication. The access logs show NULL-AUTH-USER. I saw your solution, copying the remoteUser into request scope in every application and logging using %attribute.&lt;name&gt;%. We have around 20 web apps though. So this did not seem like a reliable solution. I considered modifying jcifs source but jcifs is a library in every webapp currently, so all would need to be modified. I found that JCIFS puts the username in a session attribute called NtlmHttpAuth. Glassfish doesn't have any documented method to log session variables. So I searched through the glassfish source code for any undocumented features. No session logging.&lt;br /&gt;&lt;br /&gt;I found that with adding one line of code to glassfish I could make JCIFS authenticated user access logging work.&lt;br /&gt;&lt;br /&gt;I added:&lt;br /&gt;&lt;br /&gt;if (user == null &amp;&amp; hreq.getSession(false) != null &amp;&amp; hreq.getSession(false).getAttribute("NtlmHttpAuth") != null) { user = &lt;br /&gt;hreq.getSession(false).getAttribute("NtlmHttpAuth").toString(); }&lt;br /&gt;&lt;br /&gt;in com\sun\enterprise\web\accesslog\DefaultAccessLogFormatterImpl.java appendAuthUserName method (line 388).&lt;br /&gt;&lt;br /&gt;I compiled it and put it in:&lt;br /&gt;C:\Sun\AppServer\lib\appserv-rt.jar&lt;br /&gt;&lt;br /&gt;We are running Sun GlassFish Enterprise Server v2.1 (9.1.1). I only compiled and added that one java file to appserv-rt.jar. I used source from:&lt;br /&gt;GlassFish Project - v2.1 FinalBuild (also known as v2.1 b60e Promoted Build).&lt;br /&gt;&lt;br /&gt;This isn't the best way to patch glassfish but it is working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-6161043325048466028?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/6161043325048466028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/java-glassfish-jcifs-access-logging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6161043325048466028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6161043325048466028'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/java-glassfish-jcifs-access-logging.html' title='Java GlassFish JCIFS access logging NULL-AUTH-USER'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/14730316994929550406</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-917484732287182868</id><published>2009-07-08T15:55:00.003-10:00</published><updated>2009-07-08T15:59:52.483-10:00</updated><title type='text'>Google Voice</title><content type='html'>Ok this isn't coding related. Many of my posts are more about hacking things than coding specifically.&lt;br /&gt;&lt;br /&gt;I just got my google voice invite today! This is perfect. Hopefully I can port my cell number to it soon because I will be moving to Japan in under 2 months and need some kind of VOIP solution and a place to port my cell phone numbers to.&lt;br /&gt;&lt;br /&gt;I'll post again when I've actually played with google voice. I'm at work right now. I signed up many many months ago soon after google took over from grandcentral.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-917484732287182868?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/917484732287182868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/google-voice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/917484732287182868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/917484732287182868'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/google-voice.html' title='Google Voice'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/14730316994929550406</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-6808977557243084381</id><published>2009-07-02T15:06:00.003-10:00</published><updated>2009-07-02T15:15:20.494-10:00</updated><title type='text'>ROT 13 encoding and computer basics for an 8 year old</title><content type='html'>&lt;pre&gt;&lt;br /&gt;I showed my daughter how to write secret messages using ROT13.&lt;br /&gt;&lt;br /&gt;If you haven't heard of ROT 13, imagine cutting an empty toilet roll in half&lt;br /&gt;(vertically, so you still get 2 cylinders).&lt;br /&gt;You write: ABCDEFGHIJKLMNOPQRSTUVWXYZ on one.&lt;br /&gt;Then: ABCDEFGHIJKLMNOPQRSTUVWXYZ on the other.&lt;br /&gt;Line up A on the top one with A on the bottom one.&lt;br /&gt;ROT is short for rotate.&lt;br /&gt;Now rotate the bottom cylinder 13 letters ahead so that A is above and N is below.&lt;br /&gt;Flat on paper this now looks like:&lt;br /&gt;ABCDEFGHIJKLMNOPQRSTUVWXYZ.&lt;br /&gt;NOPQRSTUVWXYZABCDEFGHIJKLM.&lt;br /&gt;You can now us this to encode and decode messages.&lt;br /&gt;HELLO would become:&lt;br /&gt;URYYB&lt;br /&gt;http://en.wikipedia.org/wiki/Rot13&lt;br /&gt;&lt;br /&gt;I also showed her letters to numbers:&lt;br /&gt;A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z.&lt;br /&gt;1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26.&lt;br /&gt;&lt;br /&gt;So here HELLO would become:&lt;br /&gt;8 5 12 12 15.&lt;br /&gt;&lt;br /&gt;Next I'll teach her that computers have character maps. ASCII.&lt;br /&gt;A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z.&lt;br /&gt;65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90.&lt;br /&gt;&lt;br /&gt;Hold down ALT and press 72 and you get H.&lt;br /&gt;ALT 72 ALT 69 ALT 76 ALT 76 ALT 79 would become:&lt;br /&gt;HELLO&lt;br /&gt;&lt;br /&gt;Eventually I'll explain binary and how data is stored using electrical ons and offs.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-6808977557243084381?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/6808977557243084381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/rot-13-encoding-and-computer-basics-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6808977557243084381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6808977557243084381'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/rot-13-encoding-and-computer-basics-for.html' title='ROT 13 encoding and computer basics for an 8 year old'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-8828398438082109590</id><published>2009-07-02T10:27:00.003-10:00</published><updated>2009-07-02T10:33:33.670-10:00</updated><title type='text'>.NET gridview not showing header is no data</title><content type='html'>I've been fighting with empty girdviews not showing the header for a while and this is the solution I came up with:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        public static void gridViewShowHeader(GridView gridView)&lt;br /&gt;        {&lt;br /&gt;            // Show header row (if none)&lt;br /&gt;            Table table = new Table();&lt;br /&gt;            if (gridView.Controls.Count != 0) table = (Table)gridView.Controls[0];&lt;br /&gt;            if (table.Rows.Count != 0 &amp;&amp; ((GridViewRow)table.Rows[0]).RowType&lt;br /&gt;                == DataControlRowType.Header) return;&lt;br /&gt;            GridViewRow headerRow = new GridViewRow(-1, -1,&lt;br /&gt;                DataControlRowType.Header, DataControlRowState.Normal);&lt;br /&gt;            for (int i = 0; i &lt; gridView.Columns.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                TableHeaderCell headerCell = new TableHeaderCell();&lt;br /&gt;                headerCell.Text = gridView.Columns[i].HeaderText;&lt;br /&gt;                headerRow.Controls.Add(headerCell);&lt;br /&gt;            }&lt;br /&gt;            table.Rows.AddAt(0, headerRow);&lt;br /&gt;            gridView.Controls.Add(table);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I have another routine that adds dropdown lists as column filters.&lt;br /&gt;So this routine doesn't just test for an empty gridview, it tests&lt;br /&gt;for a gridview without a header. So this can be run before or after&lt;br /&gt;my gridViewShowFilters routine without a problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-8828398438082109590?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/8828398438082109590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/net-gridview-not-showing-header-is-no.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8828398438082109590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8828398438082109590'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/net-gridview-not-showing-header-is-no.html' title='.NET gridview not showing header is no data'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-8590161761323309820</id><published>2009-07-02T08:41:00.002-10:00</published><updated>2009-07-02T10:25:36.128-10:00</updated><title type='text'>.NET asp:BoundField DataFormatString problem</title><content type='html'>&lt;pre&gt;&lt;br /&gt;To apply a DataFormatString on a BoundField like DataFormatString="{0:MM/dd/yyyy}&lt;br /&gt;in older versions of .NET you need to set HtmlEncode="false". It doesn't seem to&lt;br /&gt;be needed in 3.5. If you are going to allow editing also add&lt;br /&gt;ApplyFormatInEditMode="true".&lt;br /&gt;&lt;br /&gt;I decided to do this programmaticly because I am dealing with many reports (~8)&lt;br /&gt;with lots of fields (28-53) that change often. There is one method for gridViews&lt;br /&gt;and another for detailsView.&lt;br /&gt;&lt;br /&gt;        public static void gridViewFormatDates(GridView gv)&lt;br /&gt;        {&lt;br /&gt;            for (int i = 0; i &lt; gv.Columns.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                if (gv.Columns[i].GetType() == typeof(BoundField))&lt;br /&gt;                {&lt;br /&gt;                    BoundField d = (BoundField)gv.Columns[i];&lt;br /&gt;                    SqlDataSource sds = (SqlDataSource) gv.DataSourceObject;&lt;br /&gt;                    if (gv.Columns[i].SortExpression.Contains("date"))&lt;br /&gt;                    {&lt;br /&gt;                        d.ApplyFormatInEditMode = true;&lt;br /&gt;                        d.DataFormatString = "{0:MM/dd/yyyy}";&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void detailsViewFormatDates(DetailsView dv)&lt;br /&gt;        {&lt;br /&gt;            for (int i = 0; i &lt; dv.Fields.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                if (dv.Fields[i].GetType() == typeof(BoundField))&lt;br /&gt;                {&lt;br /&gt;                    BoundField d = (BoundField)dv.Fields[i];&lt;br /&gt;                    if (dv.Fields[i].SortExpression.Contains("date"))&lt;br /&gt;                    {&lt;br /&gt;                        d.ApplyFormatInEditMode = true;&lt;br /&gt;                        d.DataFormatString = "{0:MM/dd/yyyy}";&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;Ok you may have noticed that the fieldname (sortExpression) must have "date"&lt;br /&gt;in it for this to work. Yeah it's ugly. So I came up with another solution&lt;br /&gt;which still isn't perfect either.&lt;br /&gt;&lt;br /&gt;I previously created a method to shorten long gridview columns. So I added&lt;br /&gt;this automatic date formatting to it. Call this from your onrowcreated method&lt;br /&gt;like gridViewShortenColumns(myGridView, e.Row, 30);&lt;br /&gt;&lt;br /&gt;        public static void gridViewShortenColumns(GridView gv, GridViewRow gvr, int width)&lt;br /&gt;        {&lt;br /&gt;            DataRowView dr = (DataRowView)gvr.DataItem;&lt;br /&gt;            for (int i = 0; i &lt; gvr.Cells.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                DataControlFieldCell d = (DataControlFieldCell)gvr.Cells[i];&lt;br /&gt;                String name = d.ContainingField.SortExpression;&lt;br /&gt;                if (!name.Equals("") &amp;&amp; dr[name].GetType() == typeof(DateTime))&lt;br /&gt;                    ((BoundField)gv.Columns[i]).DataFormatString = "{0:MM/dd/yyyy}";&lt;br /&gt;                if (dr != null &amp;&amp; name != null &amp;&amp; !name.Equals("") &amp;&amp;&lt;br /&gt;                gvr != null &amp;&amp; dr[name] != null &amp;&amp; dr[name].ToString().Length &gt; width)&lt;br /&gt;                {&lt;br /&gt;                    gvr.Cells[i].ToolTip = dr[name].ToString();&lt;br /&gt;                    dr[name] = dr[name].ToString().Substring(0, width) + " ...";&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-8590161761323309820?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/8590161761323309820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/07/net-aspboundfield-dataformatstring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8590161761323309820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8590161761323309820'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/07/net-aspboundfield-dataformatstring.html' title='.NET asp:BoundField DataFormatString problem'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-4800042294924253664</id><published>2009-06-08T14:42:00.005-10:00</published><updated>2009-06-08T14:50:37.931-10:00</updated><title type='text'>VS2008 Error connecting to undo manager</title><content type='html'>In VS2008 do you get "Error connecting to undo manager of source file 'SOMEFILE.aspx.designer.cs'"? Delete SOMEFILE.aspx.designer.cs, right click on the project and choose "Convert to Web Application". It will regenerate that SOMEFILE.aspx.designer.cs and the error will go away.&lt;br /&gt;&lt;br /&gt;I'm not sure what is causing it but I'm seeing this error come up every few days. It might be because I tried out Web Developer Express and now I'm back to using Visual Studio 2008.&lt;br /&gt;&lt;br /&gt;Maybe it has something to do with: Visual Local History 2005 (VLH2005) that I started using:&lt;br /&gt;http://vlh2005.codeplex.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-4800042294924253664?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/4800042294924253664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/06/error-connecting-to-undo-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/4800042294924253664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/4800042294924253664'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/06/error-connecting-to-undo-manager.html' title='VS2008 Error connecting to undo manager'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-6980715875618245358</id><published>2009-06-02T09:11:00.002-10:00</published><updated>2009-06-02T09:25:41.654-10:00</updated><title type='text'></title><content type='html'>Yikes! This morning I found out our main application server ssl certificate expired. We have to request a new ssl&lt;br /&gt;cert from the Army and it may take a few weeks. The warnings the users get aren't too bad. Everyone ignores&lt;br /&gt;warnings anyways. Some web services are failing though.&lt;br /&gt;&lt;br /&gt;So I need to add some code to make the web applications trust invalid ssl certificates.&lt;br /&gt;&lt;br /&gt;So in java I put in:&lt;br /&gt;&lt;br /&gt;public static void installAllTrustingAuthority()&lt;br /&gt;{&lt;br /&gt; // Create a trust manager that does not validate certificate chains&lt;br /&gt; TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager()&lt;br /&gt; {&lt;br /&gt;  public X509Certificate[] getAcceptedIssuers() { return null; }&lt;br /&gt;  public void checkClientTrusted(X509Certificate[] certs, String authType) {}&lt;br /&gt;  public void checkServerTrusted(X509Certificate[] certs, String authType) {}&lt;br /&gt; } };&lt;br /&gt; try&lt;br /&gt; {&lt;br /&gt;  SSLContext sc = SSLContext.getInstance("SSL");&lt;br /&gt;  sc.init(null, trustAllCerts, null);&lt;br /&gt;  sc.init(null, trustAllCerts, new java.security.SecureRandom());&lt;br /&gt;  HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());&lt;br /&gt; }&lt;br /&gt; catch (Exception e) { e.printStackTrace(); }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In .NET we are getting this error "AuthenticationException : The remote certificate is invalid according to the validation procedure."&lt;br /&gt;&lt;br /&gt;So I found this website: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/ignoring-https-related-authenticationexception-when-using-a-webclient/307.html&lt;br /&gt;and added:&lt;br /&gt;&lt;br /&gt;public static void SetBypassSslCertificateValidation()&lt;br /&gt;{&lt;br /&gt;  ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(BypassSslCertificateValidation);&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;private static bool BypassSslCertificateValidation(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)&lt;br /&gt;{ return true; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-6980715875618245358?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/6980715875618245358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/06/yikes-this-morning-i-found-out-our-main.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6980715875618245358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/6980715875618245358'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/06/yikes-this-morning-i-found-out-our-main.html' title=''/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-630576757723936399</id><published>2009-05-20T13:33:00.002-10:00</published><updated>2009-05-20T13:40:20.088-10:00</updated><title type='text'>Disable Sprint One-Click Carousel</title><content type='html'>Here are instructions on how to disable/enable Sprint One-Click Carousel which is on the Samsung Rant phones and probably many others:&lt;br /&gt;&lt;br /&gt;Push in ##3282# as if it was a phone number (it is also ##DATA#).&lt;br /&gt;Go down to *.XUI and turn it on/off using XUI on/off.&lt;br /&gt;&lt;br /&gt;The phone will run much better with it disabled. Mine used to freeze ocassionally while one-click was fetching updates or something. This was especially annoying when I was pressing * back to unlock the phone and it would just sit there doing nothing for 45 seconds while I repeatedly entered * back, * back, * back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-630576757723936399?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/630576757723936399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/disable-sprint-one-click-carousel.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/630576757723936399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/630576757723936399'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/disable-sprint-one-click-carousel.html' title='Disable Sprint One-Click Carousel'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-3528206651800610698</id><published>2009-05-19T13:09:00.002-10:00</published><updated>2009-05-19T13:14:58.624-10:00</updated><title type='text'>4 Javascript functions - Post 1</title><content type='html'>&lt;pre&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;Javascript examples&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;style&amp;gt;&lt;br /&gt;.c1 {} .c2{} .c3 {} .c4{} .c5 {} .c6{} .c7 {} .c8{} .c9 {} .c10{}&lt;br /&gt;.LockOff { display: none; visibility: hidden; }&lt;br /&gt;.LockOn&lt;br /&gt;{&lt;br /&gt;  display: block;&lt;br /&gt;  visibility: visible;&lt;br /&gt;  position: absolute;&lt;br /&gt;  z-index: 998;&lt;br /&gt;  top: 0px;&lt;br /&gt;  left: 0px;&lt;br /&gt;  width: 105%;&lt;br /&gt;  height: 105%;&lt;br /&gt;  font-size: 4em;&lt;br /&gt;  background-color: #ccc;&lt;br /&gt;  text-align: center;&lt;br /&gt;  padding-top: 20%;&lt;br /&gt;  padding-bottom: 40%;&lt;br /&gt;  filter: alpha(opacity=55);&lt;br /&gt;  opacity: 0.55;&lt;br /&gt;}&lt;br /&gt;    &amp;lt;/style&amp;gt; &lt;br /&gt;    &amp;lt;script&amp;gt;&lt;br /&gt;var previousRow;&lt;br /&gt;var previousRowColor;&lt;br /&gt;function highlightRow(row, newColor)&lt;br /&gt;{&lt;br /&gt;  if(previousRow != null) previousRow.style.backgroundColor = previousRowColor;&lt;br /&gt;  if(previousRow != row)&lt;br /&gt;  {&lt;br /&gt;    previousRow = row;&lt;br /&gt;    previousRowColor = row.style.backgroundColor;&lt;br /&gt;    row.style.backgroundColor = newColor;&lt;br /&gt;  }&lt;br /&gt;  else previousRow = null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getRadioValue(radioObj)&lt;br /&gt;{&lt;br /&gt;    if (!radioObj) return "";&lt;br /&gt;    if(radioObj.checked) return radioObj.value;&lt;br /&gt;    for (var i = 0; i &amp;lt; radioObj.length; i++) { if (radioObj[i].checked) return radioObj[i].value; }&lt;br /&gt;    return "";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function hideClass(className)&lt;br /&gt;{&lt;br /&gt;  for(i=0; i&amp;lt;document.styleSheets.length; i++)&lt;br /&gt;  {&lt;br /&gt;    rules = document.styleSheets[i].rules;&lt;br /&gt;    if(rules == null) rules = document.styleSheets[i].cssRules;&lt;br /&gt;    &lt;br /&gt;    for(j=0; j&amp;lt;rules.length; j++)&lt;br /&gt;    {&lt;br /&gt;     if(rules[j].selectorText == '.'+className) rules[j].style.display='none';&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function w()&lt;br /&gt;{&lt;br /&gt;  var lock = document.getElementById('pleaseWaitPane');&lt;br /&gt;  if(lock) lock.className = 'LockOn';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function no_w()&lt;br /&gt;{&lt;br /&gt;  var lock = document.getElementById('pleaseWaitPane');&lt;br /&gt;  if(lock) lock.className = 'LockOff';&lt;br /&gt;}&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;h2&amp;gt;Here are examples of 4 useful javascript functions&amp;lt;/h2&amp;gt;&lt;br /&gt;    &amp;lt;div id="pleaseWaitPane" class="LockOff"&amp;gt;&lt;br /&gt;   Please Wait&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;   &amp;lt;button onclick="no_w(); document.execCommand('stop');"&amp;gt;Cancel&amp;lt;/button&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;a href="https://webapp1.tamc.amedd.army.mil/phonelist/slowLoading.jsp" onclick="w();"&amp;gt;Wait example link&amp;lt;/a&amp;gt;&lt;br /&gt; &lt;br /&gt;    &amp;lt;form method="get" action="https://webapp1.tamc.amedd.army.mil/phonelist/slowLoading.jsp" onsubmit="w();"&amp;gt;&lt;br /&gt;      &amp;lt;input type="submit" value="Wait example form"/&amp;gt;&lt;br /&gt; &amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;input type="radio" name="radio1" value="value1"/&amp;gt;value1&lt;br /&gt; &amp;lt;input type="radio" name="radio1" value="value2"/&amp;gt;value2&lt;br /&gt; &amp;lt;input type="radio" name="radio1" value="value3"/&amp;gt;value3&lt;br /&gt; &amp;lt;input type="radio" name="radio1" value="value4"/&amp;gt;value4&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;lt;button onclick="var str=getRadioValue(radio1); if(str == '') alert('Please choose a value'); else alert('You choose '+str); "&amp;gt;&lt;br /&gt;   getRadioValue example&lt;br /&gt; &amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;b&amp;gt;HideColumn example&amp;lt;/b&amp;gt;: click an x to temporarily hide a column.&amp;lt;br/&amp;gt;&lt;br /&gt; &amp;lt;b&amp;gt;HighlightRow example&amp;lt;/b&amp;gt;: click a row to see it highlighted.&amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;table border="1"&amp;gt;&lt;br /&gt;      &amp;lt;tr&amp;gt;&lt;br /&gt;     &amp;lt;th class="c1"&amp;gt;col1 &amp;lt;a href="#" onclick="hideClass('c1');"&amp;gt;x&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;     &amp;lt;th class="c2"&amp;gt;col2 &amp;lt;a href="#" onclick="hideClass('c2');"&amp;gt;x&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;     &amp;lt;th class="c3"&amp;gt;col3 &amp;lt;a href="#" onclick="hideClass('c3');"&amp;gt;x&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;     &amp;lt;th class="c4"&amp;gt;col4 &amp;lt;a href="#" onclick="hideClass('c4');"&amp;gt;x&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;     &amp;lt;th class="c5"&amp;gt;col5 &amp;lt;a href="#" onclick="hideClass('c5');"&amp;gt;x&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;     &amp;lt;th class="c6"&amp;gt;col6 &amp;lt;a href="#" onclick="hideClass('c6');"&amp;gt;x&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;   &amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr onclick="highlightRow(this,'pink');"&amp;gt;&amp;lt;td class="c1"&amp;gt;test1&amp;lt;/td&amp;gt;&amp;lt;td class="c2"&amp;gt;test2&amp;lt;/td&amp;gt;&amp;lt;td class="c3"&amp;gt;test3&amp;lt;/td&amp;gt;&amp;lt;td class="c4"&amp;gt;test4&amp;lt;/td&amp;gt;&amp;lt;td class="c5"&amp;gt;test5&amp;lt;/td&amp;gt;&amp;lt;td class="c6"&amp;gt;test6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr onclick="highlightRow(this,'pink');"&amp;gt;&amp;lt;td class="c1"&amp;gt;test1&amp;lt;/td&amp;gt;&amp;lt;td class="c2"&amp;gt;test2&amp;lt;/td&amp;gt;&amp;lt;td class="c3"&amp;gt;test3&amp;lt;/td&amp;gt;&amp;lt;td class="c4"&amp;gt;test4&amp;lt;/td&amp;gt;&amp;lt;td class="c5"&amp;gt;test5&amp;lt;/td&amp;gt;&amp;lt;td class="c6"&amp;gt;test6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr onclick="highlightRow(this,'pink');"&amp;gt;&amp;lt;td class="c1"&amp;gt;test1&amp;lt;/td&amp;gt;&amp;lt;td class="c2"&amp;gt;test2&amp;lt;/td&amp;gt;&amp;lt;td class="c3"&amp;gt;test3&amp;lt;/td&amp;gt;&amp;lt;td class="c4"&amp;gt;test4&amp;lt;/td&amp;gt;&amp;lt;td class="c5"&amp;gt;test5&amp;lt;/td&amp;gt;&amp;lt;td class="c6"&amp;gt;test6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr onclick="highlightRow(this,'pink');"&amp;gt;&amp;lt;td class="c1"&amp;gt;test1&amp;lt;/td&amp;gt;&amp;lt;td class="c2"&amp;gt;test2&amp;lt;/td&amp;gt;&amp;lt;td class="c3"&amp;gt;test3&amp;lt;/td&amp;gt;&amp;lt;td class="c4"&amp;gt;test4&amp;lt;/td&amp;gt;&amp;lt;td class="c5"&amp;gt;test5&amp;lt;/td&amp;gt;&amp;lt;td class="c6"&amp;gt;test6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr onclick="highlightRow(this,'pink');"&amp;gt;&amp;lt;td class="c1"&amp;gt;test1&amp;lt;/td&amp;gt;&amp;lt;td class="c2"&amp;gt;test2&amp;lt;/td&amp;gt;&amp;lt;td class="c3"&amp;gt;test3&amp;lt;/td&amp;gt;&amp;lt;td class="c4"&amp;gt;test4&amp;lt;/td&amp;gt;&amp;lt;td class="c5"&amp;gt;test5&amp;lt;/td&amp;gt;&amp;lt;td class="c6"&amp;gt;test6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr onclick="highlightRow(this,'pink');"&amp;gt;&amp;lt;td class="c1"&amp;gt;test1&amp;lt;/td&amp;gt;&amp;lt;td class="c2"&amp;gt;test2&amp;lt;/td&amp;gt;&amp;lt;td class="c3"&amp;gt;test3&amp;lt;/td&amp;gt;&amp;lt;td class="c4"&amp;gt;test4&amp;lt;/td&amp;gt;&amp;lt;td class="c5"&amp;gt;test5&amp;lt;/td&amp;gt;&amp;lt;td class="c6"&amp;gt;test6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-3528206651800610698?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/3528206651800610698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/4-javascript-functions-post-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/3528206651800610698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/3528206651800610698'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/4-javascript-functions-post-1.html' title='4 Javascript functions - Post 1'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-7897029400690442526</id><published>2009-05-15T16:36:00.003-10:00</published><updated>2009-05-18T08:39:44.505-10:00</updated><title type='text'>Sprint Cell Phone customization - Post 2</title><content type='html'>Changing the XUI URL and XUI FEED URL did nothing! It didn't even break any of the XUI features (that I've noticed yet). Nothing showed up on the tcpdump. I pointed both at my own server and watched for any traffic from my phone.&lt;br /&gt;&lt;br /&gt;Here are some browser version and browser strings from my old phone and my new phone:&lt;br /&gt;&lt;br /&gt;Samsung Upstage:&lt;br /&gt;Default: Samsung-SPHM620 AU-MIC-M620/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1&lt;br /&gt;Opera: Mozilla/5.0 (compatible; OpenWeb 5.6.1.3-03) Opera 8.54&lt;br /&gt;Unknown: Mozilla/5.0 (compatible; OpenWeb 5.7.4-09)&lt;br /&gt;&lt;br /&gt;Samsung Rant:&lt;br /&gt;Polaris (Default): Samsung-SPHM540 Polaris/6.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1&lt;br /&gt;BOLT: Mozilla/5.0 (X11; 78; CentOS; US-en) AppleWebKit/527+ (KHTML, like Gecko) Bolt/0.920 Version/3.0 Safari/523.15&lt;br /&gt;Opera: Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.10423/1724; en; U; ssr)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-7897029400690442526?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/7897029400690442526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/changing-xui-url-and-aui-feed-url-did.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/7897029400690442526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/7897029400690442526'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/changing-xui-url-and-aui-feed-url-did.html' title='Sprint Cell Phone customization - Post 2'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-1842730973781982593</id><published>2009-05-15T11:50:00.005-10:00</published><updated>2009-05-15T11:54:27.029-10:00</updated><title type='text'>.NET annoyance 6 - asp:DropDownList</title><content type='html'>&lt;pre&gt;&lt;br /&gt;asp:DropDownList departmentDD has 0 elements.&lt;br /&gt;In the code-behind I set departmentDD.SelectedIndex = 9;&lt;br /&gt;In the debugger I see that departmentDD.SelectedIndex stays at 0.&lt;br /&gt;I would expect it to throw an error, stay at zero, or switch to 9.&lt;br /&gt;It stayed at 0. I'm ok with that.&lt;br /&gt;Further down in the codebehind I do push some data into&lt;br /&gt;departmentDD and departmentDD.databind.&lt;br /&gt;Suddently departmentDD.SelectedIndex is equal to 9!&lt;br /&gt;It remembered and set the value later once it could do it.&lt;br /&gt;That's nice of it. I don't expect or want to object to be nice.&lt;br /&gt;I want it to be consistant and predictable.&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;How many other weird quirks are in the web component objects?&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;So I ran another test.&lt;br /&gt;asp:DropDownList departmentDD has 2 elements.&lt;br /&gt;In the code-behind I set departmentDD.SelectedIndex = 1;&lt;br /&gt;In the debugger I see that departmentDD.SelectedIndex is now 1.&lt;br /&gt;I don't like this.&lt;br /&gt;If it's going to some lame late update of selectedIndex when databound,&lt;br /&gt;it should do it that way everytime.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-1842730973781982593?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/1842730973781982593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/aspdropdownlist-departmentdd-has-0.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/1842730973781982593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/1842730973781982593'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/aspdropdownlist-departmentdd-has-0.html' title='.NET annoyance 6 - asp:DropDownList'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-8899524445147186805</id><published>2009-05-14T16:42:00.003-10:00</published><updated>2009-05-14T23:29:26.544-10:00</updated><title type='text'>Sprint Cell Phone customization</title><content type='html'>I just got a Sprint Samsung Rant cell phone for free. It is a big bulky thing but has a nice keyboard.&lt;br /&gt;&lt;br /&gt;I got the MSL service code, copied the primary NAI to the tethered NAI using bitpm and QPST, and other fun stuff I'm not going to explain in detail. If you enter ##DATA# as phone number you can get at a lot of extra settings. Also going into settings, display, press # has more settings but you need your MSL.&lt;br /&gt;&lt;br /&gt;So anyways.. I want to customize the user interface. Using ##DATA# I can disable XUI making the One-Click Carousel go away. That leaves the phone in safe mode. It seems to be fully functional and faster in safe mode. Safe mode is probably how the phone manufacturer wanted the phone to work. so now we have One-Click or Safe Mode.&lt;br /&gt;&lt;br /&gt;I found that ##BREW# brings up a whole different user interface. Now we have Brew also as a UI.&lt;br /&gt;&lt;br /&gt;I see in ##DATA# an XUI URL and XUI FEED URL. They are set to tileservice.sprint.com/xui/live and feedservice.sprint.com. I've been searching google and I can't find anything about those settings or those urls! Has no one else wanted to change the tiles available in the One-Click interface? That can't be! Maybe sprint is killing off everyone mentioning it. I'll start saying my goodbyes soon.&lt;br /&gt;&lt;br /&gt;Those urls are not accessable from my computer's browser. They don't seem to work from the default browser, Bolt, or Opera Mini 3 either. Maybe I will try some tests while using the phone as a modem (tethered). Maybe those services aren't on port 80.&lt;br /&gt;&lt;br /&gt;Later I'll have to point those urls at my hosting server and use a packet sniffer to see what the phone sends. Maybe I will find some neat ways to customize the One-Click XUI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-8899524445147186805?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/8899524445147186805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/i-just-got-sprint-samsung-rant-cell.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8899524445147186805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8899524445147186805'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/i-just-got-sprint-samsung-rant-cell.html' title='Sprint Cell Phone customization'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-8000337508553858689</id><published>2009-05-11T16:41:00.004-10:00</published><updated>2009-05-15T17:35:20.118-10:00</updated><title type='text'>.NET annoyance 5 - asp:CheckBox tag</title><content type='html'>HTML allows you to check a checkbox and submit any value.&lt;br /&gt;Web developers get used to that type of thing.&lt;br /&gt;.NET has an asp:CheckBox that only allows you to submit "on" or nothing.&lt;br /&gt;&lt;br /&gt;I have a search page that has 10 checkboxes. In java I would just simply put those checkbox submitted values into a query (after sql escaping them). The checkboxes are type1-5 and skill1-5.&lt;br /&gt;&lt;br /&gt;&amp;lt;input type="checkbox" name="type1" value="AD"/&amp;gt;Active Duty&lt;br /&gt;&amp;lt;input type="checkbox" name="type2" value="CIV"/&amp;gt;Civilian&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;select name, department, type, skill from personTable where type in (@type1,@type2,@type3,@type4, @type5) and skill in (@skill1, @skill2, @skill3, @skill4, @skill5)&lt;br /&gt;&lt;br /&gt;Push the request values into that sql query and Bing bang bong done. Not in .NET using asp:checkbox tags though. I would have to have code behind with the value of each of those checkboxes. I hate to put things that could change in two places.&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:CheckBox ID="type1" runat="server" Text="Active Duty" /&amp;gt;&lt;br /&gt;&amp;lt;asp:CheckBox ID="type2" runat="server" Text="Civilian" /&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;(In this example I am using a asp:SqlDataSource peopleDS) Then in the codebehind (in&lt;br /&gt;peopleDS_Selecting) I would have to put code in to modify the sql query.&lt;br /&gt;if (!type1.Checked) e.Command.Parameters["@type1"].Value = "AD";&lt;br /&gt;if (!type2.Checked) e.Command.Parameters["@type2"].Value = "CIV";&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Very annoying. Now I have the sql query split between .. Nevermind. I'll setup a better example later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-8000337508553858689?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/8000337508553858689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/html-allows-you-to-check-checkbox-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8000337508553858689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/8000337508553858689'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/html-allows-you-to-check-checkbox-and.html' title='.NET annoyance 5 - asp:CheckBox tag'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-4431335237601467607</id><published>2009-05-11T16:28:00.007-10:00</published><updated>2009-05-18T08:55:44.692-10:00</updated><title type='text'>.NET annoyance 4 - Lack of conditional tags</title><content type='html'>&lt;pre&gt;There are no conditional tags in .NET web components.&lt;br /&gt;&lt;br /&gt;So instead of a nice jstl tag in java like:&lt;br /&gt;&lt;br /&gt;Java/JSP/JSTL/EL Solution #1:&lt;br /&gt;&amp;lt;c:if test="${row.name == ''}"%gt;BLANK%lt;/c:if&amp;gt;&lt;br /&gt;&lt;br /&gt;In .NET I would have to create a code-behind wrapper method like:&lt;br /&gt;&lt;br /&gt;Solution #2:&lt;br /&gt;protected String testEmpty(String stringToCheck, String  trueReturn, String  falseReturn)&lt;br /&gt;{&lt;br /&gt;   if("".Equals(stringToCheck)) return(trueReturn);&lt;br /&gt;   else return(falseReturn);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Then use this in the form view:&lt;br /&gt;&lt;%# testEmpty(DataBinder.Eval(Container.DataItem, "name"),&lt;br /&gt;"BLANK", DataBinder.Eval(Container.DataItem, "name")) %&gt;&lt;br /&gt;&lt;br /&gt;Or Solution #3:&lt;br /&gt;protected void OnRowCreated(object sender, GridViewRowEventArgs e)&lt;br /&gt;{&lt;br /&gt;   if (e.Row.RowType == DataControlRowType.DataRow)&lt;br /&gt;   {&lt;br /&gt;       DataRowView dataRow = e.Row.DataItem as DataRowView;&lt;br /&gt;       Object dataValue = dataRow["name"];&lt;br /&gt;       if("".Equals(dataValue)) e.Row.Cells[2].Text = "BLANK";&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;In solution 2 I am essentially creating my own conditional tag. Why shouldn't there be one like this by default? In solution 3 I am creating codebehind that will break if I reorder the fields in the formview.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-4431335237601467607?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/4431335237601467607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/there-are-no-conditional-tags-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/4431335237601467607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/4431335237601467607'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/there-are-no-conditional-tags-in.html' title='.NET annoyance 4 - Lack of conditional tags'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-5810223564797480879</id><published>2009-05-11T16:23:00.001-10:00</published><updated>2009-05-14T23:21:05.794-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='master pages'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.NET annoyance 3</title><content type='html'>If you use masterpages expect all of your form variables to be renamed for you.&lt;br /&gt;&amp;lt;input type="yourName" value=""/&amp;gt;&lt;br /&gt;Is submitted as ctl00$body$yourName.&lt;br /&gt;&lt;a href="http://forums.asp.net/t/647306.aspx"&gt;http://forums.asp.net/t/647306.aspx&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-5810223564797480879?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/5810223564797480879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/if-you-use-masterpages-expect-all-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/5810223564797480879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/5810223564797480879'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/if-you-use-masterpages-expect-all-of.html' title='.NET annoyance 3'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-5141416205560793547</id><published>2009-05-11T16:15:00.001-10:00</published><updated>2009-05-14T22:33:43.755-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='master pages'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.NET annoyance 2</title><content type='html'>&lt;p&gt;Make sure you don't use # signs in html comments. Master Pages choke on those.  Example: &amp;lt;!-- #BeginEditable "sidebar" --&amp;gt;&lt;br /&gt;&lt;a href="http://www.vbforums.com/showthread.php?t=547336"&gt;http://www.vbforums.com/showthread.php?t=547336&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-5141416205560793547?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/5141416205560793547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/make-sure-you-dont-use-signs-in-html.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/5141416205560793547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/5141416205560793547'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/make-sure-you-dont-use-signs-in-html.html' title='.NET annoyance 2'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-435368397505412875.post-1610502152006905946</id><published>2009-05-11T15:58:00.003-10:00</published><updated>2009-05-14T23:25:08.046-10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='master pages'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.NET annoyance 1</title><content type='html'>I am converting web applications from Java to .NET C#.&lt;br /&gt;Many things bother me about .NET.&lt;br /&gt;One of them is that I can't reuse a Master Pages content ContentPlaceHolder.&lt;br /&gt;Here is someone describing the exact lame problem:&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/760334/contentplaceholders-repeated-content"&gt;http://stackoverflow.com/questions/760334/contentplaceholders-repeated-content&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/435368397505412875-1610502152006905946?l=coderkyle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderkyle.blogspot.com/feeds/1610502152006905946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coderkyle.blogspot.com/2009/05/net-annoyance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/1610502152006905946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/435368397505412875/posts/default/1610502152006905946'/><link rel='alternate' type='text/html' href='http://coderkyle.blogspot.com/2009/05/net-annoyance.html' title='.NET annoyance 1'/><author><name>Kyle</name><uri>http://www.blogger.com/profile/17460251959407121285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
