Click here to Skip to main content
6,291,722 members and growing! (13,468 online)
Email Password   helpLost your password?
Platforms, Frameworks & Libraries » .NET Framework » How To     Intermediate

Accessing the different controls inside a GridView control

By azamsharp

How to access the different controls inside a GridView control.
C#, VB, Windows, .NET, Visual Studio, Dev
Posted:20 Oct 2005
Views:150,241
Bookmarked:44 times
Announcements
Loading...
 
Search    
Advanced Search
printPrint   Broken Article?Report       add Share
  Discuss Discuss   Recommend Article Email
21 votes for this article.
Popularity: 4.04 Rating: 3.06 out of 5
6 votes, 28.6%
1
3 votes, 14.3%
2
2 votes, 9.5%
3
4 votes, 19.0%
4
6 votes, 28.6%
5

Introduction

I receive many emails asking how we can access a particular control which resides inside a GridView control. In this article I will show you how you can access different controls inside a GridView control. We will see how we can access a TextBox control, a DropDownList control and a ListBox control. If you are working with ASP.NET 1.X then you might want to check out my article Accessing Different Controls Inside a DataGrid.

Adding controls to the GridView control

You can add several controls to the GridView control by simply using the <ItemTemplate> option.

Populating ListBox and DropDownList

The next task is to populate the ListBox and the DropDownList control. Let's make a simple server side method that will populate both the ListBox and the DropDownList.

C# Code

// This method populates the DropDownList and the ListBox control

public DataSet PopulateControls()
{
    SqlConnection myConnection = new SqlConnection(GetConnectionString());
    SqlDataAdapter ad = new SqlDataAdapter("SELECT [Name] FROM tblPerson", 
                                                            myConnection);
    DataSet ds = new DataSet();
    ad.Fill(ds, "tblPerson");
    return ds;
}

VB.NET Code

' This method populates the DropDownList and the ListBox control

Public Function PopulateControls() As DataSet
    Dim myConnection As SqlConnection = New SqlConnection(GetConnectionString())
    Dim ad As SqlDataAdapter = New SqlDataAdapter("SELECT " & _ 
                               "[Name] FROM tblPerson",myConnection)
    Dim ds As DataSet = New DataSet()
    ad.Fill(ds, "tblPerson")
    Return ds
End Function

Now we need to bind this method in the HTML view. Check out the code below for the DropDownList, you can repeat the same procedure for the ListBox control.

<ItemTemplate>
  <asp:DropDownList ID="DropDownList1" DataTextField="Name" 
    DataValueField = "Name" DataSource= '<%# PopulateControls() %>' runat="server">
  </asp:DropDownList>
</ItemTemplate>

Now your DropDownList and the ListBox control are populated with some data. Now let's see how we can access different controls inside the GridView.

Accessing different controls within the GridView control

On the Button click event, we will try to print out the values that are either entered (TextBox) or selected (DropDownList and ListBox). Let's see how this can be done.

C# Code

protected void Button1_Click(object sender, EventArgs e)
{
    // Iterates through the rows of the GridView control

    foreach (GridViewRow row in GridView1.Rows)
    {
        // Selects the text from the TextBox

        // which is inside the GridView control

        string textBoxText = _
          ((TextBox)row.FindControl("TextBox1")).Text;
        Response.Write(textBoxText);
        // Selects the text from the DropDownList

        // which is inside the GridView control

        string dropDownListText = ((DropDownList)
           row.FindControl("DropDownList1")).SelectedItem.Value;
        Response.Write(dropDownListText);
        // Selects items from the ListBox

        // which is inside the GridView control

        ListBox myListBox = (ListBox)row.FindControl("ListBox1");

        foreach(ListItem selectedItem in myListBox.Items)
        {
            // Checks if the item in the ListBox is selected or not

            if (selectedItem.Selected)
            {
                // Print the value of the item if its selected

                Response.Write(selectedItem.Value);
            }
        }
    }

VB.NET Code

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
        ' Iterates through the rows of the GridView control

        For Each row As GridViewRow In GridView1.Rows
            ' Selects the text from the TextBox

            ' which is inside the GridView control

            Dim textBoxText As String = _
              CType(row.FindControl("TextBox1"),TextBox).Text
            Response.Write(textBoxText)
            ' Selects the text from the DropDownList

            ' which is inside the GridView control

            Dim dropDownListText As String = _
              CType(row.FindControl("DropDownList1"), _
              DropDownList).SelectedItem.Value
            Response.Write(dropDownListText)
            ' Selects items from the ListBox

            ' which is inside the GridView control 

            Dim myListBox As ListBox = _
                CType(row.FindControl("ListBox1"),ListBox)
            For Each selectedItem As ListItem In myListBox.Items
                ' Checks if the item in the ListBox is selected or not 

                If selectedItem.Selected Then
                    ' Print the value of the item if its selected

                    Response.Write(selectedItem.Value)
                End If
            Next
        Next
    End Sub

All we are doing in the code above is iterating through all the rows of the GridView control using the GridViewRow object. Next we find the control using the FindControl method and prints out the control's value.

I hope you liked the article, happy coding!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

azamsharp


Member
I am the founder of knowledge base website, HighOnCoding, GridViewGuy, RefactorCode.com and ScreencastADay.com.

HighOnCoding is a website which will get you high legally with useful information. There are tons of articles, videos and podcasts hosted on HighOnCoding.

HighOnCoding.com www.HighOnCoding.com


My Blog:

Blog

Occupation: Web Developer
Location: United States United States

Other popular .NET Framework articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 13 of 13 (Total in Forum: 13) (Refresh)FirstPrevNext
GeneralMy vote of 1 PinmemberJoe Gakenheimer )3:12 16 Dec '08  
QuestionHow to access last row of gridview... Pinmemberfrifun4:13 29 Aug '08  
Generaldidnt get the value Pinmembernitendra2:28 7 Mar '08  
GeneralGet Checkbox values of Gridviewcontrol in button click Pinmembersenjith4:43 14 Oct '07  
QuestionHow to get the new value Pinmemberbeaglepuppy12:34 23 Feb '07  
GeneralMultiple TextBoxes Pinmembersuperstringman3:59 5 Jan '07  
GeneralAccess a control value in the Editing Row. Pinmemberra ra ra ra8:26 21 Dec '06  
GeneralDoes not work for my gridview. PinmemberBreak4011:02 22 Sep '06  
GeneralRe: Does not work for my gridview. Pinmemberazamsharp11:10 22 Sep '06  
GeneralRe: Does not work for my gridview. [modified] PinmemberBreak4011:23 22 Sep '06  
Questiongridview header Pinmembero5ama22:31 14 Aug '06  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 20 Oct 2005
Editor: Smitha Vijayan
Copyright 2005 by azamsharp
Everything else Copyright © CodeProject, 1999-2009
Web20 | Advertise on the Code Project