case statement, if then else if else in C#

I have this code which will write the status based on respective values. e.x. if AT should write Attended, CO confirmed and any other value should write Open. The problem is it always write Open even if the value of the row is AT. I also tried if then else if else statement and got the same results.

Thanks!
     
   for (int i = 0; i < rowcount; i++)
        {
            row = GridView1.Rows[i];
           phcd = ((Label)(GridView1.Rows[i].FindControl("lblDcode"))).Text;
            tCode = ((Label)(GridView1.Rows[i].FindControl("lblDcode")));
           
            switch (tcode.Trim())
            {            
                case "AT":                    
                     tCode.Text = "Attended";
                    break;
                case "CO":                    
                     tCode.Text = "Confirmed";
                    break;
                default:
                     tCode.Text = "Open";
                    break;
               
            }
jr_bautistaAsked:
Who is Participating?
 
aprestoConnect With a Mentor Commented:
Set a breakpoint on the switch(...) bit, and check the value in tcode, this may give you a better idea as to what is going on. Are you familiar with debugging in VS?Below is revised code, a few changed:
- you could just use phcd in switch as this is the text roperty of the label
- you can use "row" instead of Gridview1.Rows[i] when setting variables because row is already set to the current row

This should work fine:
...
for (int i = 0; i < rowcount; i++)
{
	row = GridView1.Rows[i];
    phcd = ((Label)(row.FindControl("lblDcode"))).Text;
    tcode = ((Label)(row.FindControl("lblDcode")));
    
    switch (phcd.ToUpper().Trim()) //<!--Set break point here and either hover, use quick watch or immediate qindow to check value
    {            
	    case "AT":                    
			tcode.Text = "Attended";
			break;
	    case "CO":                    
			tcode.Text = "Confirmed";
	        break;
		default:
			tcode.Text = "Open";
		break;
	}
}
...

Open in new window

0
 
aprestoCommented:
change this
switch (tcode.Trim())
to this:
switch (tcode.ToUpper().Trim())
0
 
p_davisCommented:
try tcode.Trim().ToUpper();
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
aprestoCommented:
C# is case sensitive remember :)
0
 
p_davisCommented:
well, i got beat.
0
 
Gorkem YukselConnect With a Mentor Commented:
Hi all,

Just my 2 cents here.. but tcode is the label control.. you haven't checked the TEXT within the label control..  change your switch statement to this, it should work a lot better:

switch (tCode.Text.ToUpper().Trim())
{
    ....
}

Cheers,

G.
0
 
aprestoCommented:
Well spotted gyuksel!!
0
 
jr_bautistaAuthor Commented:
I already tried those solutions even before to no avail. The thing is if I try

if tcode == "AT"
{
  write this
}

if tcode == "CO"
{
  write this
}

it works fine....but I will write a long code since I have lots of values
0
 
HarryNSCommented:
Put a Response.Write and check what value is there. Then copy the same and keep it in your Case/If statements.
0
 
aprestoCommented:
ok, for a start you have 2 different variables here:
tCode = ((Label)(GridView1.Rows[i].FindControl("lblDcode")));
...
switch (tcode.Trim())
tCode is not the same as tcode - c# is case sensitive. Have you declared tcode somewhere else, im surprised it didnt pick it up. are you using Visual studio?
 
0
 
jr_bautistaAuthor Commented:
tCode is my variable and i used it in switch statement, just have a wrong type...yes Im using VS I just changed the name of the variable.
0
 
jr_bautistaAuthor Commented:
I tried all the trim and Upper functions and it doesn't work...
0
 
jr_bautistaAuthor Commented:
apresto I tried your code and still doesn't work, I write the value of phcd.ToUpper().Trim() and got the correct values. The thing is if I remove the default: condition if executes right, but when I bring it back it executes the default condition only(write "Open") even it should execute the other condition as some records has values of "AT" and "CO"
0
 
jr_bautistaAuthor Commented:
Hey guys I got this one worked. It turned out that I need to add  another label control on runtime at set the existing lblDcode to not visible.

Thanks for all the help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.