Hello,
I need to loop though each row in a GridView and if the checkbox is a
Template Field is checked I want to display the value of an invisible
column named "LevelName" .
I tried everything I could think off but I always get an error or no
value.
Could someone please let me know what might be wrong?
Here is my GridView init code:
1 Private Sub gvLevels_Init(B yVal sender As Object, ByVal e As
System.EventArg s) Handles gvLevels.Init
2
3 With gvLevels
4 .AutoGenerateCo lumns = False
5 .DataKeyNames = New String() {"LevelName" }
6 .DataSource = Levels_Fill()
7 .ID = "gvLevels"
8 End With
9
10 Dim bfLevelDescript ion As New BoundField
11 bfLevelDescript ion.DataField = "LevelDescripti on"
12 gvLevels.Column s.Add(bfLevelDe scription)
13
14 Dim tfLevelSubscrip tion As New TemplateField
15 tfLevelSubscrip tion.ItemTempla te = New
tfLevelSubscrip tion(ListItemTy pe.Item)
16 gvLevels.Column s.Add(tfLevelSu bscription)
17
18 gvLevels.DataBi nd()
19
20 End Sub ' gvLevels_Init
My grid view data source is:
1 Private Function Levels_Fill() As DataView
2
3 Dim dtLevels As New DataTable("Leve ls")
4 Dim dvLevels As DataView
5 dtLevels = Levels.GetAllLe vels().Tables(0 )
6 dtLevels.Column s.Add(New DataColumn("Lev elSubscription" ,
GetType(Boolean )))
7
8 ' Define dtLevels primary key
9 dtLevels.Primar yKey = New DataColumn()
{dtLevels.Colum ns("LevelName") }
10
11 dvLevels = New DataView(dtLeve ls, "", "LevelName" ,
DataViewRowStat e.CurrentRows)
12 Return dvLevels
13
14 End Function ' Levels_Fill
I am trying to access my check boxes as follows:
1 Dim dkLevel As DataKey
2 For Each gvrLevel As GridViewRow In gvLevels.Rows
3 Dim cbLevelSubscrip tion As CheckBox =
CType(gvrLevel. FindControl("cb LevelSubscripti on"), CheckBox)
4 If cbLevelSubscrip tion.Checked Then
5 dkLevel = gvLevels.DataKe ys(gvrLevel.Row Index)
6 Response.Write( dkLevel.Value)
7 End If
8 Next gvrLevel
When I click the button which will run the code that loops through
each check box I get the following error:
"Item has already been added.Key in dictionay: "LevelName" Key been
added: "LevelName"
I removed:
5 .DataKeyNames = New String() {"LevelName" }
And I stopped having this error but still does not work.
Any idea?
Thanks,
Miguel