Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

GridView Cell Color Red If Text Empty?

Posted on 2011-03-03
6
Medium Priority
?
805 Views
Last Modified: 2012-05-11
The following code changes the entire column to Red, however I would like to just change Only cells with empty text.

Q. How can I change Only certain Cells Red and not the entire column?

    protected void gridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if(e.Row.Cells[7].Text.Contains(""))
                e.Row.Cells[7].BackColor = System.Drawing.Color.Red;
        }
    }
0
Comment
Question by:pointeman
  • 3
  • 2
6 Comments
 
LVL 10

Expert Comment

by:himanshut
ID: 35032861
maybe coz your that column would be empty that's why the condition is true to get the cell color Red
0
 
LVL 11

Accepted Solution

by:
MajorBigDeal earned 2000 total points
ID: 35033337
I was having a similar problem and I used the following logic in the page load event instead of the row binding to get around it.

DataTable dt = (DataTable)gridView.DataSource;
int rowIndex = 0;
foreach (GridViewRow gvr in gridView.Rows)
{
gvr.DataItem = dt.Rows[rowIndex++];
DataRow dr = (DataRow)gvr.DataItem;                
object[] oa = dr.ItemArray;
if (oa[7].ToString().Length == 0)
{
gvr.Cells[7].BackColor = System.Drawing.Color.Red;
}
}
0
 

Author Comment

by:pointeman
ID: 35037079
Okay, here's how it's done in RowDataBound (similar to MajorBigDeal).

I can now read text of both:
asp:BoundField
asp:TemplateField (Text='<%# Bind("FirstName") %>'>).


    protected void gridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
            foreach (GridViewRow row in gridView1.Rows)
            {                              
                if(row.Cells[6].Text == "10")
                row.Cells[6].BackColor = System.Drawing.Color.Red;

                if(((Label)row.FindControl("label1")).Text == "Jim")
                    ((Label)row.FindControl("label1")).BackColor = System.Drawing.Color.Green; //right-next to cell[6].

            }    
    }
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:pointeman
ID: 35037372
New Problem:
  1. asp:CommandField won't 'fire', throws error:
        "Object reference not set to an instance of an object."
   
However, asp:ButtonField works fine.
0
 
LVL 11

Expert Comment

by:MajorBigDeal
ID: 35041069
Yes but it doesn't make sense to put that in row data bound because you are iterating the entire grid for every row. For example, if your grid has 100 rows , your loop will run 10000 times.  I guess it doesn;t really matter but I think it would be better in the page load.  

I want to help with your new problem, but there isn't enough info,  Also, if you open a new question for that, you'll probably get more responses since experts are always jumping on new questions.
0
 

Author Comment

by:pointeman
ID: 35059938
I'll give you points because your solution works, but not in RowDataBound.
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have developed many web applications with asp & asp.net and to add and use a dropdownlist was always a very simple task, but with the new asp.net, setting the value is a bit tricky and its not similar to the old traditional method. So in this a…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This Micro Tutorial will teach you how to add a cinematic look to any film or video out there. There are very few simple steps that you will follow to do so. This will be demonstrated using Adobe Premiere Pro CS6.
This video shows how to quickly and easily deploy an email signature for all users in Office 365 and prevent it from being added to replies and forwards. (the resulting signature is applied on the server level in Exchange Online) The email signat…
Suggested Courses

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question