Selecting a Row

Up until now, the Select column in the grid hasn't done anything useful. You might want to allow users to select a row and display information about the selected row. For example, you might want to display the category name associated with the selected item in the grid. Displaying this information requires a little bit of code, as you might imagine.

Actually, selecting an item in the DataGrid control takes no code at all—simply clicking the Select link highlights the row for you, based on the formatting you applied to the grid. Retrieving the information, however, requires that you react to the ItemCommand event of the grid. Clicking any link on the DataGrid control filters through the same event procedure: grdCatSales_ItemCommand, in this case.

How can you differentiate between the various items? When you created the column, you set the CommandName property of the column to be Select, and you can check the CommandName property of the second parameter sent to the event procedure—if it's not Select, you simply don't run any code.

In order to display the category name in the label on the page, follow these steps:

1.
With CategorySales.aspx open in the page designer, select the View, Code menu item to view the page's code-behind file.

2.
At the top of the code editor window, from the drop-down list on the left, select grdCatSales.

3.
From the drop-down list on the right, select ItemCommand. This inserts the appropriate event-handling procedure into the class for you.

4.
Modify grdCatSales_ItemCommand so that it looks like this:

Private Sub grdCatSales_ItemCommand( _
 ByVal source As Object, _
 ByVal e As System.Web.UI.WebControls. _
 DataGridCommandEventArgs) _
 Handles grdCatSales.ItemCommand

  Dim ds As DataSet
								Dim dr As DataRow
								Select Case e.CommandName
								Case "Select"
								' Get stored DataSet
								ds = CType(Session("DS"), DataSet)
								' Get the Row from the DataSet
								dr = ds.Tables(0).Rows(e.Item.DataSetIndex)
								' Display the Category Name column
								lblCategory.Text = "Category: " & _
								dr("CategoryName").ToString
								Case Else
								' No others, right now.
								End Select
End Sub

5.
Build and browse the page, select a row, and verify that you see the category name displayed in the label on the page.

The procedure does its work by taking these actions:

  • It checks the CommandName value. The code looks at the CommandName property of the second parameter (e) passed to the procedure. If the value is Select, the procedure can react to the user clicking the Select column on the page:

    Select Case e.CommandName
      Case "Select"
      ...
    End Select
    

  • It retrieves the DataSet from the Session state and converts the Object to a DataSet:

    ' Get stored DataSet
    ds = CType(Session("DS"), DataSet)
    

  • It retrieves the row from the DataSet, in the first DataTable, corresponding to the DataSetIndex property of the currently selected item (DataSetIndex returns the row number of the selected row):

    ' Get the Row from the DataSet
    dr = ds.Tables(0).Rows(e.Item.DataSetIndex)
    

  • It displays the CategoryName column value in the label:

    ' Display the Category Name column
    lblCategory.Text = "Category: " & _
     dr("CategoryName").ToString
    

NOTE

Because you'll trigger the ItemCommand event if you select any link within the DataGrid control, you must check the CommandName property of the second parameter (e.CommandName) before running your code. This example used a Select Case statement, so it's easy to add other cases. (For example, if you click any of the pager links, the CommandName property would be Page.)


..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.149.249.174