Friday, August 27, 2010

DateTime.ParseExact

So after never having had CultureInfo.CurrentCulture on my radar, I ended up using it twice this week.

For the first use, see my previous post on ToUpperInvariant().

Today, I ran into a problem where I tried DateTime.Parse on a string which I had generated in a gridview using:

<asp:BoundField DataField="DateStarted"
  DataFormatString="{0:ddd MMM d hh:mmtt}" />
The compiler couldn't parse it.

I ended up having to decode it using the following:

DateTime dateCreated =DateTime.ParseExact(sdateCreated,
  "ddd MMM d hh:mmtt", CultureInfo.InvariantCulture);

ToUpperInvariant()

Whoa! Jon Skeet answered a question of mine on StackOverflow this week! I am honored.

The question was:

In C# what is the difference between ToUpper() and ToUpperInvariant()?

And the answer was, in a nutshell, "Unless you are programming in Turkish, no difference."

What brought me to ask that question started with a need to always reformat user input for first and last name with Initial Letter Case: first letter capitalized, rest lower case. (I know, I know, this is not all last names follow this convention, but hey, I didn't define the user requirements.) (In word I use Shift-F3 all the time.)

So I went looking in intellisense for a string method called InitialLetterCase(). After all, there are string methods ToUpper() and ToLower().

There was no InitialLetterCase() method, but I found ToUpperInvariant(). What did that do? I did a google search but the first few hits didn't seem to answer the question.

So thank you, Jon Skeet and StackOverflow, for the answer.

FYI, the solution to my request is a simple

tbFirstName.Text =
CultureInfo.CurrentCulture.TextInfo.ToTitleCase(tbFirstName.Text); :

Wednesday, July 7, 2010

RegisterStartupScript vs Response.Write

Even though putting windows popup alerts into your UI can be bad design, annoying to your users, etc, sometimes it's just what you need to get the job done. I feel it's ok to use an occasional windows alert, as long as you don't abuse them.

If you are also using Ajax, you have a choice of 2 ways to program that alert from the code behind: Response.Write or ScriptManager.RegisterStartupScript.

The difference is that Response.Write will popup an alert box before the page loads, ie on a white background, and ScriptManager.RegisterStartupScript will pop it up after the page has loaded, so the page is visible behind the popup.

I prefer using ScriptManager.RegisterStartupScript, but maybe I just haven't come across an application where Response.Write would be better.

In any case, the following is the code to use for each case:

Response.Write("<script language='javascript'> 
      alert('This pops up on a blank page
     (ie before the page loads) using response.write');</SCRIPT> "
);
ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, 
  "alert('This pops up after the page loads,
     using ScriptManager.RegisterStartupScript');"
, true);
 


I have also popped up an alert on pageload by using the following in the html < body> tag of the page:

<body onLoad="alert('Update. \r\n \r\n Thank you for your interest,
\r\n however, \r\n we are not taking any new orders at this time.')"
>
The \r\n causes a line break.

Tuesday, June 29, 2010

Because I always forget proc names ...

protected void Page_PreInit(object sender, EventArgs e)
{
string msg = "Fires 1";
}

protected void Page_Init(object sender, EventArgs e)
{
string msg = "Fires 2";
}


protected void Page_Load(object sender, EventArgs e)
{
string msg = "Fires 3";
}

protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string msg = "Fires last";
}

Thursday, June 17, 2010

WebDataGrid Numeric Pager Truncates List of Page Numbers

The WebDataGrid Numeric Pager was truncating the list of page numbers after reaching the end of the one line (table width) allocated for the pager display, as shown in the example below. There were scroll bars for the height and width of the data records, but no way to scroll past the end of the line of numbers and see page 21 in this example:



My solution was to create the following Css

<style type="text/css">
.tallPager {
height: 100px;
word-wrap: break-word;
text-align:left;
}
</style>

and apply it to the Paging property


<Behaviors>
<ig:Paging PageSize="25" PagerMode="Numeric" EnableInheritance="True"
PagerCssClass="tallPager" />

etc...

The following shows the pager section for a different table, with the PagerCssClass ="tallPager"


Note: Word wraps can occur in the middle of a page number like 108:


Fortunately, I have a higher class of users and they were able to deal with that.

Monday, May 17, 2010

tsql INSERT INTO for bulk copy of records from SqlServer table to table

I have been using tsql

Select * into Tbl2 from Tbl1 where FName = 'David'

for a long time, as a shortcut to create new table Tbl2, a copy of Tbl1 including schema and data.

I'm glad I finally found out about :

Insert into Tbl2 ( LastName , FirstName , AdmitDate) select Last, First, RevDate from Tbl1 where FName = 'David'

to use when Tbl2 is already in existence.

Friday, May 14, 2010

Calling all Technical Women in Technology for...

What we have all been waiting for ...

A NJ Technical Women in Technology
Event



Register Now ->


Recommended Audiences: IT Professionals, Administrators, Developers, Architects


Are you a Technical Women in Technology?

Are you tired of always being surrounded by technical males that don't ____ (fill in the blank)?

Are you tired of trying to explain your technical issues to other women that just don't get it?

Are you looking to connect with other women with common interests?


Then, you may be interested in helping to form a Technical Women in Technology Group...

Refreshments: Appetizers & Water/Soda

Sponsors: Microsoft / SetFocus

Purpose:

To allow NJ Technical Women in Technology to meet and to discuss a future direction for a group




Event Updates: updates

Agenda:

Overview

Attendee Introductions

Panel Discussion (2-3 women sharing their experiences as a Technical Women in Technology

Future Direction Discussion - In-Person and/or Virtual meetings, frequency, meeting content, etc.



For Additional Information about how you can help kick start this community, please email melissa[@]sqldiva.com.