Solved

Using GridViewRow DataBound Event Args

Posted on 2007-12-06
5
6,248 Views
Last Modified: 2013-11-26
The following method is called when my gridview is databound.  I want to make a button disappear on teh first and last records in the gridview.  The code below only works for the first.  The commented out line needs to be fixed to get it to work for the last.

How can I test to see if this is the last row being added to the gridview?

    protected void gvSections_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton up = (ImageButton)e.Row.FindControl("btMoveUp");
            ImageButton down = (ImageButton)e.Row.FindControl("btMoveDown");
            up.Visible = true;
           
            down.Visible = true;
            if (e.Row.RowIndex == 0) up.Visible = false;
            //else if (e.Row.RowIndex > 3) down.Visible = false;
        }
    }
0
Comment
Question by:hoyaabanks
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 21

Expert Comment

by:surajguptha
ID: 20422903
e.Row.RowIndex == gvSections.Rows.Count
0
 

Author Comment

by:hoyaabanks
ID: 20423293
gvSection.Rows.Count always equals the same as RowIndex.  I think the reason for this is that the rows are currently being created when this event handler is called.

I need something that gives me all of the rows that are goign to be generated.  Is there a way to count the dataItem rows?
0
 
LVL 21

Expert Comment

by:surajguptha
ID: 20423513
>>  I want to make a button disappear on teh first and last records in the gridview.  
Can you explain this in detail please?
0
 
LVL 14

Expert Comment

by:CtrlAltDl
ID: 20424078
I think you need to do a seperate function (getCount) that does a SQL query to get the record counts.  Then you change your code to this:
else if (e.Row.RowIndex == getCount()) down.Visible = false;
    public static int getCount(string strUserName)
    {
        int intCount = 0;
        string strSQL = "SELECT count(empID) FROM tblEmployees WHERE Login = '" + strUserName + "'";
        string strConn = ConfigurationManager.ConnectionStrings["myConnectionString"].ToString();
 
        SqlConnection objConn = new SqlConnection(strConn);
 
        SqlCommand objCmd = new SqlCommand(strSQL, objConn);
 
        objConn.Open();
 
        SqlDataReader objReader = objCmd.ExecuteReader();
 
        if (objReader.HasRows)
        {
            while (objReader.Read())
            {
                intCount = (int)objReader[0].ToString();
            }
        }
        objReader.Close();
        objConn.Close();
        return intCount;
    }

Open in new window

0
 
LVL 14

Accepted Solution

by:
CtrlAltDl earned 500 total points
ID: 20424116
Actually I think it should be one less since the row count is a zero based index:

else if (e.Row.RowIndex == getCount() - 1) down.Visible = false;

Of course you'll have to change the SQL to be the same as your datasource for the GridView.  You'll also need to change the ConnectionString too.
0

Featured Post

Raise the IQ of Your IT Alerts

From IT major incidents to manufacturing line slowdowns, every business process generates insights that need to reach the people required to take action. You need a platform that integrates with your business tools to create fully enabled DevOps toolchains.

You need xMatters.

Question has a verified solution.

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

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
If you're a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…

717 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