Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 472
  • Last Modified:

Specifying Gridview Row Cells

Hi All,

Say I have the following RowDataBound event..

Rather than specifying the cell using it's ordinal value is there a more specific way that won't mean that I need to check/ update this event every time a new column is added to the Gridview control?

Many thanks,

Rit
Sub ProductGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
 
    If e.Row.RowType = DataControlRowType.DataRow Then
    
	Dim myQty as Integer = CInt(e.Row.Cells(1).Text)
 
	If myQty > 0 then
		e.Row.Cells(3).Text = "In Stock"
	Else
		e.Row.Cells(3).Text = "Not In Stock"
	End If 
       
    End If
    
End Sub

Open in new window

0
rito1
Asked:
rito1
1 Solution
 
ajollyCommented:
I use C#, so I am writing solution in C#.

One part I have tried to keep in VB.Net which was copied from yours.
// C# Code
Private int QuantityColumnIndex;
Private int AvailabilityColumnIndex;
 
Page_Load()
{
    for(int i = 0; i < ProductGridView.Columns.Count; i++)
    {
        if (ProductGridView.Columns[i].HeaderText == "Quantity")
        {
                QuantityColumnIndex = i;
        }
        if (ProductGridView.Columns[i].HeaderText == "Availability")
        {
                AvailabilityColumnIndex = i;
        }
    }
}
 
// VB.Net Code
Sub ProductGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
 
    If e.Row.RowType = DataControlRowType.DataRow Then
    
        Dim myQty as Integer = CInt(e.Row.Cells(QuantityColumnIndex).Text)
 
        If myQty > 0 then
                e.Row.Cells(AvailabilityColumnIndex).Text = "In Stock"
        Else
                e.Row.Cells(AvailabilityColumnIndex).Text = "Not In Stock"
        End If 
       
    End If
    
End Sub

Open in new window

0
 
prairiedogCommented:
1. Convert the Quantity and Availability BoundFields into a TemplateFields
2. In your code, do something like this:
 

Sub ProductGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
 
    If e.Row.RowType = DataControlRowType.DataRow Then
    
		Dim lbl As Label = CType(e.Row.FindControl("lblQuantity"), Label 'Change lblQuantity to your Label's name
		Dim lbl2 As Label = CType(e.Row.FindControl("lblAvailability"), Label) 'Change the name if needed
		
		If (lbl IsNot Nothing And lbl2 IsNot Nothing) Then		
	        Dim myQty as Integer = CInt(lbl.Text)	 
	        If myQty > 0 then
	                lbl2.Text = "In Stock"
	        Else
	                lbl2.Text = "Not In Stock"
	        End If 
		End If
       
    End If
    
End Sub

Open in new window

0
 
rito1Author Commented:
Thanks both,
prairiedog, this is exactly what I was looking for.

Rit
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now