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
Solved

Using GridViewRow DataBound Event Args

Posted on 2007-12-06
5
6,245 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
  • 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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

856 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