This is a migrated thread and some comments may be shown as answers.

Reference to non-shared member when attempting to iterate through RadGrid

6 Answers 104 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Alexander
Top achievements
Rank 1
Alexander asked on 09 Jun 2014, 01:43 PM
I am attempting to iterate through a RadGrid and check the values of the checkbox inside a template column.

So far what I have is the following: 

Protected Sub btnAssignToLocation_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnAssignToLocation.Click
  
            Try
                For Each myRow As GridDataItem In myGrid.Items
                    Dim myID As String = myRow("ProductID").Text
                    Dim myInLocation As CheckBox = CType(myRow.FindControl("cbLocationUsed"), CheckBox)
                    If Not myInLocation Is Nothing Then
                        If myInLocation.Checked Then
                            MyData.ProcNonQuery("myQuery", "@LocID", lcLocation.LocationID, "@ID", myID)
                        Else
                            MyData.ProcNonQuery("myQuery", "@LocID", lcLocation.LocationID, "@ID", myID)
                        End If
                        PolicyPDFCache.ClearLocationCache(lcLocation.LocationID)
                    End If
                Next
            Catch ex As Exception
                     'my error code
  
            End Try
End Sub

I get the error, "Reference to a non-shared member requires an object reference." On the line For Each myRow As GridDataItem In myGrid.Items. I have googled this, but come up with 0 results that either worked or made sense for me/my project. I am not quite sure how to get rid of this. I am pretty certain I am doing the iteration correctly. I have referenced a few posts on the Telerik forums as well as StackOverflow.

6 Answers, 1 is accepted

Sort by
0
Alexander
Top achievements
Rank 1
answered on 09 Jun 2014, 01:52 PM
For clarification, the button that I am clicking is not located inside the RadGrid. Its basically a sort of 'update' button that will save the changes in checkboxes that I have made.
0
Princy
Top achievements
Rank 2
answered on 10 Jun 2014, 04:41 AM
Hi Alexander,

I was not able to replicate such an issue at my end. Your code works fine. Please check the below sample code snippet. Provide your aspx code and the line which raises the error.

ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" DataSourceID="SqlDataSource1"   AllowPaging="true" >
    <MasterTableView DataKeyNames="OrderID">
        <Columns>          
            <telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity" />
            <telerik:GridTemplateColumn>
                <ItemTemplate>
                    <asp:CheckBox ID="chkStatus" runat="server" />
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>
<asp:Button ID="btnSave" runat="server" Text="Save" />
 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind_newConnectionString3 %>"  SelectCommand="SELECT  * FROM [Orders]"></asp:SqlDataSource>

VB:
Protected Sub btnSave_Click(sender As Object, e As System.EventArgs) Handles btnSave.Click
      Try
          For Each myRow As GridDataItem In RadGrid1.Items
              Dim myID As String = myRow("OrderID").Text
              Dim myInLocation As CheckBox = CType(myRow.FindControl("chkStatus"), CheckBox)
              If Not myInLocation Is Nothing Then
                  If myInLocation.Checked Then
                      myRow.ForeColor = Drawing.Color.Green
                  Else
                      myRow.ForeColor = Drawing.Color.Red
                  End If
              End If
          Next
      Catch ex As Exception
          'my error code
      End Try
  End Sub

Thanks,
Princy
0
Alexander
Top achievements
Rank 1
answered on 10 Jun 2014, 01:44 PM
Hey Princy, thanks for responding!

The line errors on 

For Each myRow As GridDataItem In myGrid.Items

The aspx for the graph/button is the following:

<td>
     <telerik:RadGrid runat="server" ID="myGrid" AllowFilteringByColumn="true" AllowPaging="true" PagerPosition="TopAndBottom" AllowSorting="true" PagerStyle-AlwaysVisible="true" MasterTableView-AllowMultiColumnSorting="true" PageSize="50" MasterTableView-ClientDataKeyNames="IDs" CurrentFilterFunction="Contains" GroupingSettings-CaseSensitive="false">
         <MasterTableView AutoGenerateColumns="false">
              <CommandItemSettings ShowExportToExcelButton="true" ShowExportToPdfButton="true" ShowAddNewRecordButton="false" ShowExportToWordButton="true" >
              </CommandItemSettings>
              <PagerStyle Position="TopAndBottom" />
              <Columns>
                 <telerik:GridBoundColumn FilterDelay="2000" ShowFilterIcon="false" DataField="ProductID" HeaderText="Product ID" SortExpression="ProductID" AutoPostBackOnFilter="true">
                 </telerik:GridBoundColumn>
                 <telerik:GridTemplateColumn HeaderText="In Loc" HeaderStyle-Width="55px" SortExpression="InLocation" HeaderStyle-ForeColor="White" AllowFiltering="false">
                            <ItemTemplate>
                                <asp:CheckBox ID="cbLocationUsed" runat="server" Text="" Checked='<%# DataBinder.Eval(Container.DataItem, "InLocation")%>' />
                            </ItemTemplate>
                  </telerik:GridTemplateColumn>
             </Columns>
        </MasterTableView>
    </telerik:RadGrid>
</td>
<td valign="top">
            <GraphBtn:WinampButton ID="btnAssignToLocation" runat="server" TemplateName="Save" Text="Update Location" />
</td>

I don't see anything wrong with this current method and I really don't understand that error. FYI: I did leave out some information on the graph, but it was nonessential things.

0
Alexander
Top achievements
Rank 1
answered on 11 Jun 2014, 07:01 PM
I was able to establish that there is data in the column even though it is currently not being shown. This shouldn't be an issue in my opinion. I am going to attempt to just directly talk to the hlLink item instead.
0
Alexander
Top achievements
Rank 1
answered on 11 Jun 2014, 07:02 PM
Whoops, wrong forum post. my bad!
0
Alexander
Top achievements
Rank 1
answered on 12 Jun 2014, 01:38 PM
I changed my For Each line as someone told me and I was able to traverse it without the error.

My For Each line looks like: 
For Each myRow As GridItem In myGrid.MasterTableView.GetItems(GridItemType.Item, GridItemType.AlternatingItem)
Tags
Grid
Asked by
Alexander
Top achievements
Rank 1
Answers by
Alexander
Top achievements
Rank 1
Princy
Top achievements
Rank 2
Share this question
or