Solved

Using GridViewRow DataBound Event Args

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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Suggested Solutions

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

910 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

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now