We help IT Professionals succeed at work.

Trying to manipulate the displayed value in a GridView column

Medium Priority
298 Views
Last Modified: 2013-12-17
 I have a column I am creating in a GridView. Now the values retrived from the database for this column are integers.(1,2,3,4) I am trying to run a test for the integer retrieved and then manipulate the DataFormat string of the column based on the test. So if the value retrieved is 1, then write "Customer Complaint".
  However currently my tests (The switch case) do not seem to be running. Question becomes what column property do I actually need to test on as currently testing on the .DataField property does not seem to work. Running a test with a series of IF statements currently yields the same result. Any direction would be greatly appreciated.

Jason
BoundField correspondencetype_i = new BoundField();
        correspondencetype_i.HeaderText = "Correspondence Type";
        correspondencetype_i.DataField = "correspondencetype_i"
 
        switch (correspondencetype_i.DataField)
        {
            case "1":
                correspondencetype_i.DataFormatString = "Customer Complaint";
                break;
 
            case "2":
                correspondencetype_i.DataFormatString = "Technical Support";
                break;
 
            case "3":
                correspondencetype_i.DataFormatString = "Customer Suggestion";
                
                break;
 
            case "4":
                correspondencetype_i.DataFormatString = "Repair(RMA)";
                break;
        }

Open in new window

Comment
Watch Question

Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Top Expert 2013

Commented:
You should add BoundField in your Markup and not in code-behind.
Then in your RowDataBound Event handler do something like below:

protected void GridView4_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRowView dv = (DataRowView)e.Row.DataItem;
            string value = "";
            //yourColumnIndex below is the column in your record returned from DB that is being bound to this field
            int dbValue = Convert.ToInt32(dv.Row.ItemArray[yourColumnIndex])
            switch (dbValue )
            {
                case 1:
                    value = "Customer Complaint";
                    break;
                case 2:
                    value = "Technical Support";
                    break;
              //and so on
            }
            //yourColumnIndexToReplace is the column in the GV for which you want to replace the value.
            e.Row.Cells[yourColumnIndexToReplace].Text = value;
        }
    }
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.